장기 실행 작업 (LRO) 관리
장기 실행 작업은 API 응답에 적합한 것보다 완료하는 데 시간이 오래 걸리므로 메서드 호출을 일괄 처리하여 반환됩니다. 이렇게 하면 여러 문서가 처리되는 동안 호출 스레드가 열려 있지 않습니다. Document AI API는 API 또는 클라이언트 라이브러리를 통해 projects.locations.processors.batchProcess
를 호출할 때마다 LRO를 만듭니다. LRO는 처리 작업의 상태를 추적합니다.
Document AI API에서 제공하는 작업 메서드를 사용하여 LRO 상태를 확인할 수 있습니다. 또한 LRO 나열, 폴링, 취소도 가능합니다. 클라이언트 라이브러리가 내부적으로 비동기 메서드 폴을 호출하여 콜백을 사용 설정합니다. Python의 경우 await
가 사용 설정됩니다. 제한 시간 매개변수도 있습니다. .batchProcess에서 반환된 기본 LRO 내에서 문서별로 LRO가 생성됩니다. 일괄 페이지 수 제한이 동기화 process
호출보다 훨씬 높고 처리하는 데 시간이 많이 걸릴 수 있기 때문입니다. 기본 LRO가 종료되면 각 문서 LRO의 세부 상태가 제공됩니다.
LRO는 Google Cloud 프로젝트 및 위치 수준에서 관리됩니다. API에 요청을 수행할 때는 Google Cloud 프로젝트 및 LRO가 실행되는 위치를 포함하세요.
LRO 레코드는 LRO가 완료된 후 약 30일 동안 유지됩니다. 이후에는 LRO를 보거나 나열할 수 없습니다.
장기 실행 작업에 대한 세부정보 확인하기
다음 샘플은 LRO에 대한 세부정보를 확인하는 방법을 보여줍니다.
REST
LRO 상태를 가져오고 세부정보를 보려면 projects.locations.operations.get
메서드를 호출합니다.
projects.locations.processors.batchProcess
호출 후 다음 응답이 수신되었다고 가정해보세요.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID" }
응답의 name
값은 Document AI API가 projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID
라는 LRO를 만들었음을 보여줍니다.
또한 장기 실행 작업을 나열하여 LRO를 검색할 수 있습니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- LOCATION: LRO가 실행되는 위치입니다(예:
us
- 미국eu
- 유럽 연합
- OPERATION_ID: 작업의 ID입니다. ID는 작업 이름의 마지막 요소입니다. 예를 들면 다음과 같습니다.
- 작업 이름:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626
- 작업 ID:
bc4e1d412863e626
- 작업 이름:
HTTP 메서드 및 URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
PowerShell
다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessMetadata", "state": "SUCCEEDED", "stateMessage": "Processed 1 document(s) successfully", "createTime": "TIMESTAMP", "updateTime": "TIMESTAMP", "individualProcessStatuses": [ { "inputGcsSource": "INPUT_BUCKET_FOLDER/DOCUMENT1.ext", "status": {}, "outputGcsDestination": "OUTPUT_BUCKET_FOLDER/OPERATION_ID/0", "humanReviewStatus": { "state": "ERROR", "stateMessage": "Sharded document protos are not supported for human review." } } ] }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessResponse" } }
Go
자세한 내용은 Document AI Go API 참조 문서를 참고하세요.
Document AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
자세한 내용은 Document AI Python API 참조 문서를 참고하세요.
Document AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
장기 실행 작업 나열
다음 샘플은 Google Cloud 프로젝트 및 위치의 LRO를 나열하는 방법을 보여줍니다.
REST
Google Cloud 프로젝트 및 위치의 LRO를 나열하려면 projects.locations.operations.list
메서드를 호출합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- LOCATION: 하나 이상의 LRO가 실행되는 위치입니다(예:
us
- 미국eu
- 유럽 연합
- FILTER: (필수) 반환할 LRO 쿼리입니다. 옵션:
- TYPE: (필수) 나열할 LRO 유형입니다. 옵션:
BATCH_PROCESS_DOCUMENTS
CREATE_PROCESSOR_VERSION
DELETE_PROCESSOR
ENABLE_PROCESSOR
DISABLE_PROCESSOR
UPDATE_HUMAN_REVIEW_CONFIG
HUMAN_REVIEW_EVENT
CREATE_LABELER_POOL
UPDATE_LABELER_POOL
DELETE_LABELER_POOL
DEPLOY_PROCESSOR_VERSION
UNDEPLOY_PROCESSOR_VERSION
DELETE_PROCESSOR_VERSION
SET_DEFAULT_PROCESSOR_VERSION
EVALUATE_PROCESSOR_VERSION
EXPORT_PROCESSOR_VERSION
UPDATE_DATASET
IMPORT_DOCUMENTS
ANALYZE_HITL_DATA
BATCH_MOVE_DOCUMENTS
RESYNC_DATASET
BATCH_DELETE_DOCUMENTS
DELETE_DATA_LABELING_JOB
EXPORT_DOCUMENTS
HTTP 메서드 및 URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations?filter=TYPE=TYPE
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations?filter=TYPE=TYPE"
PowerShell
다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations?filter=TYPE=TYPE" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{ "operations": [ { "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessMetadata", "state": "SUCCEEDED", "stateMessage": "Processed 1 document(s) successfully", "createTime": "TIMESTAMP", "updateTime": "TIMESTAMP", "individualProcessStatuses": [ { "inputGcsSource": "INPUT_BUCKET_FOLDER/DOCUMENT1.ext", "status": {}, "outputGcsDestination": "OUTPUT_BUCKET_FOLDER/OPERATION_ID/0", "humanReviewStatus": { "state": "ERROR", "stateMessage": "Sharded document protos are not supported for human review." } } ] }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessResponse" } }, ... ] }
Go
자세한 내용은 Document AI Go API 참조 문서를 참고하세요.
Document AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
자세한 내용은 Document AI Python API 참조 문서를 참고하세요.
Document AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
장기 실행 작업 폴링
다음 샘플은 LRO의 상태를 폴링하는 방법을 보여줍니다.
REST
LRO를 폴링하려면 작업이 완료될 때까지 projects.locations.operations.get
메서드를 반복해서 호출합니다. 각 폴링 요청 사이에 백오프를 사용합니다(예: 10초).
아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID
- LOCATION: LRO가 실행되는 위치입니다.
- OPERATION_ID: LRO의 식별자
HTTP 메서드 및 URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행하여 LRO 상태를 10초 간격으로 폴링합니다.
while true; \ do curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"; \ sleep 10; \ done
10초마다 JSON 응답이 수신됩니다.
작업이 실행되는 동안 응답에 "state": "RUNNING"
가 포함됩니다.
작업이 완료되면 응답에 "state": "SUCCEEDED"
및 "done": true
가 포함됩니다.
PowerShell
다음 명령어를 실행하여 LRO 상태를 10초 간격으로 폴링합니다.
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Do { Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content sleep 10 } while ($true)
10초마다 JSON 응답이 수신됩니다.
작업이 실행되는 동안 응답에 "state": "RUNNING"
가 포함됩니다.
작업이 완료되면 응답에 "state": "SUCCEEDED"
및 "done": true
가 포함됩니다.
Python
자세한 내용은 Document AI Python API 참조 문서를 참고하세요.
Document AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
장기 실행 작업 취소
다음 샘플은 실행 중인 LRO를 취소하는 방법을 보여줍니다.
REST
LRO를 취소하려면 projects.locations.operations.cancel
메서드를 호출합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- LOCATION: LRO가 실행되는 위치입니다(예:
us
- 미국eu
- 유럽 연합
- OPERATION_ID: 작업의 ID입니다. ID는 작업 이름의 마지막 요소입니다. 예를 들면 다음과 같습니다.
- 작업 이름:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626
- 작업 ID:
bc4e1d412863e626
- 작업 이름:
HTTP 메서드 및 URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel"
PowerShell
다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{}
"error": { "code": 400, "message": "Operation has completed and cannot be cancelled: 'PROJECT_ID/locations/LOCATION/operations/OPERATION_ID'.", "status": "FAILED_PRECONDITION" }
Go
자세한 내용은 Document AI Go API 참조 문서를 참고하세요.
Document AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
자세한 내용은 Document AI Python API 참조 문서를 참고하세요.
Document AI에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.