비동기 엔드포인트

일부 REST API 엔드포인트는 비동기식으로 실행됩니다.

이 작동은 수행되는 조치의 대기 기간이 길거나 시스템 성능에 부정적인 영향을 미치는 경우에 유용합니다. 일부 엔드포인트는 명시적으로 비동기입니다 (예: /db2whrest/v1/sql_query_async?<sql>: GET 엔드포인트). 다른 엔드포인트는 초기에 동기화되지만 완료하는 데 10초이상 걸리는 경우 시스템에서 자동으로 비동기 조작으로 변환됩니다.

비동기 조작을 발생시키는 엔드포인트를 시작할 때, 완료될 때까지 비동기 조작을 폴링해야 합니다. 다음 단계를 수행하십시오.
  1. 비동기 조작의 위치 URI 를 찾으십시오. 엔드포인트를 시작하는 요청에 대한 응답으로 시스템은 비동기 조작이 처리를 위해 승인되었지만 아직 완료되지 않았음을 표시하는 동기 응답을 리턴합니다. 이 응답에는 202 ACCEPTED 의 상태 코드와 비동기 조작의 위치를 포함하는 응답 헤더가 포함됩니다. 다음 예제에서 상태 코드는 라인 2에 표시되고 위치 URI는 라인 5에 표시됩니다.
    * HTTP 1.0, assume close after body
    < HTTP/1.0 202 ACCEPTED
    < Content-Type: text/html; charset=utf-8
    < Content-Length: 28
    < Location: https://labsrv04/db2whrest/v1/task_status/9c0db090-bd33-41c5-969f-a1603ddf49ab
    < Server: Werkzeug/0.14.1 Python/3.4.5
    < Date: Thu, 15 Feb 2018 20:37:10 GMT
    
  2. 위치 URI에서 /db2whrest/v1/task_status/<task_id>: GET 엔드포인트를 실행하여 비동기 조작의 상태를 가져오십시오. 다음 예제는 1단계의예제에서 위치 URI를 사용합니다.
    curl -k -H 'Authorization: Bearer <token>' https://labsrv04/db2whrest/v1/task_status/9c0db090-bd33-41c5-969f-a1603ddf49ab -X GET
  3. 2단계의 task_status 엔드포인트에서 리턴되는 상태 코드가 303인 경우 비동기 조작이 완료되지 않습니다. 2단계를 반복하십시오.
  4. 2단계에서 task_status 엔드포인트의 상태 코드가 200인 경우 비동기 조작이 완료되고 응답 헤더에 결과의 위치 URI가 포함됩니다. 이 위치 URI에서 /db2whrest/v1/task_status/<task_id>: GET 엔드포인트를 실행하여 결과를 가져오십시오.
자세한 정보는 /db2whrest/v1/task_status/<task_id>: GET및 < task_id> /peek주제를 참조하십시오.