비동기 엔드포인트
일부 REST API 엔드포인트는 비동기식으로 실행됩니다.
이 작동은 수행되는 조치의 대기 기간이 길거나 시스템 성능에 부정적인 영향을 미치는 경우에 유용합니다. 일부 엔드포인트는 명시적으로 비동기입니다 (예: /db2whrest/v1/sql_query_async?<sql>: GET 엔드포인트). 다른 엔드포인트는 초기에 동기화되지만 완료하는 데 10초이상 걸리는 경우 시스템에서 자동으로 비동기 조작으로 변환됩니다.
비동기 조작을 발생시키는 엔드포인트를 시작할 때, 완료될 때까지 비동기 조작을 폴링해야 합니다. 다음 단계를 수행하십시오.
- 비동기 조작의 위치 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 - 위치 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 - 2단계의 task_status 엔드포인트에서 리턴되는 상태 코드가
303인 경우 비동기 조작이 완료되지 않습니다. 2단계를 반복하십시오. - 2단계에서 task_status 엔드포인트의 상태 코드가
200인 경우 비동기 조작이 완료되고 응답 헤더에 결과의 위치 URI가 포함됩니다. 이 위치 URI에서/db2whrest/v1/task_status/<task_id>: GET엔드포인트를 실행하여 결과를 가져오십시오.