Gestione delle operazioni a lunga esecuzione (LRO)
Le operazioni a lunga esecuzione vengono restituite dalle chiamate ai metodi di elaborazione batch perché richiedono più tempo per essere completate rispetto a quanto sia appropriato per una risposta dell'API. In questo modo, il thread di chiamata non viene mantenuto aperto durante l'elaborazione di molti documenti. L'API Document AI crea un LRO ogni volta che chiami projects.locations.processors.batchProcess
tramite l'API o le librerie client. L'LRO monitora lo stato del job di elaborazione.
Puoi utilizzare i metodi di operazioni
forniti dall'API Document AI per controllare lo
stato delle richieste di accesso a livello di organizzazione. Puoi anche elencare, sondare o annullare le RLO. Le librerie client che chiamano metodi asincroni eseguono internamente un polling, attivando il callback. (Per Python, await
è attivato). Inoltre, includono un parametro di timeout. All'interno dell'LRO principale restituito da .batchProcess, viene creato un LRO per ogni documento (poiché i limiti di numero di pagine dei batch sono molto più elevati rispetto alla chiamata di sincronizzazione process
e l'elaborazione può richiedere molto tempo). Al termine della verifica preliminare, viene fornito lo stato dettagliato di ogni verifica preliminare del documento.
Gli ordini di lavoro diretti vengono gestiti a livello di Google Cloud progetto e località. Quando effettui una richiesta all'API, includi il Google Cloud progetto e la località in cui è in esecuzione l'LRO.
Il record di un'LRO viene conservato per circa 30 giorni dal termine dell'LRO, il che significa che non puoi visualizzare o elencare un'LRO dopo questo periodo.
Visualizzare i dettagli di un'operazione a lunga esecuzione
Gli esempi riportati di seguito mostrano come recuperare i dettagli di un LRO.
REST
Per ottenere lo stato e visualizzare i dettagli di un'operazione di recupero delle risorse, chiama il metodo projects.locations.operations.get
.
Supponiamo che tu riceva la seguente risposta dopo aver chiamato
projects.locations.processors.batchProcess
:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID" }
Il valore name
nella risposta indica che l'API Document AI ha creato un LRO denominato projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID
.
Puoi anche recuperare il nome dell'operazione a lunga esecuzione elencando le operazioni a lunga esecuzione.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo Google Cloud ID progetto.
- LOCATION: la posizione in cui viene eseguita l'operazione LRO, ad esempio:
us
- Stati Unitieu
- Unione Europea
- OPERATION_ID: l'ID dell'operazione. L'ID è l'ultimo elemento del nome
dell'operazione. Ad esempio:
- Nome operazione:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626
- ID operazione:
bc4e1d412863e626
- Nome operazione:
Metodo HTTP e URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
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
Esegui questo comando:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Document AI Go.
Per autenticarti a Document AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Document AI Python.
Per autenticarti a Document AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Elenco delle operazioni a lunga esecuzione
Gli esempi riportati di seguito mostrano come elencare gli OMR in un Google Cloud progetto e in una località.
REST
Per elencare gli oggetti LRO in un Google Cloud progetto e in una località, chiama il metodo projects.locations.operations.list
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo Google Cloud ID progetto.
- LOCATION: la posizione in cui vengono eseguiti uno o più LRO, ad esempio:
us
- Stati Unitieu
- Unione Europea
- FILTER: (obbligatorio) Query per i valori LRO da restituire. Opzioni:
- TYPE: (obbligatorio) tipo di LRO da elencare. Opzioni:
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
Metodo HTTP e URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations?filter=TYPE=TYPE
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
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
Esegui questo comando:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Document AI Go.
Per autenticarti a Document AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Document AI Python.
Per autenticarti a Document AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Eseguire il polling di un'operazione a lunga esecuzione
Gli esempi riportati di seguito mostrano come eseguire il polling dello stato di un LRO.
REST
Per eseguire il polling di un'operazione LRO, chiama ripetutamente il metodo projects.locations.operations.get
fino al termine dell'operazione. Utilizza un backoff tra ogni richiesta di polling, ad esempio 10 secondi.
Prima di utilizzare i dati della richiesta riportati di seguito, effettua le seguenti sostituzioni:
- PROJECT_ID: il tuo Google Cloud ID progetto
- LOCATION: la posizione in cui è in esecuzione l'operazione LRO
- OPERATION_ID: l'identificatore dell'LRO
Metodo HTTP e URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui il seguente comando per eseguire il polling dello stato di un LRO ogni 10 secondi:
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
Dovresti ricevere una risposta JSON ogni 10 secondi.
Mentre l'operazione è in esecuzione, la risposta conterrà "state": "RUNNING"
.
Al termine dell'operazione, la risposta conterrà "state": "SUCCEEDED"
e "done": true
.
PowerShell
Esegui il seguente comando per eseguire il polling dello stato di un LRO ogni dieci secondi:
$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)
Dovresti ricevere una risposta JSON ogni 10 secondi.
Mentre l'operazione è in esecuzione, la risposta conterrà "state": "RUNNING"
.
Al termine dell'operazione, la risposta conterrà "state": "SUCCEEDED"
e "done": true
.
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Document AI Python.
Per autenticarti a Document AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Annullamento di un'operazione a lunga esecuzione
Gli esempi riportati di seguito mostrano come annullare un LRO durante l'esecuzione.
REST
Per annullare un LRO, chiama il metodo projects.locations.operations.cancel
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo Google Cloud ID progetto.
- LOCATION: la posizione in cui viene eseguita l'operazione LRO, ad esempio:
us
- Stati Unitieu
- Unione Europea
- OPERATION_ID: l'ID dell'operazione. L'ID è l'ultimo elemento del nome
dell'operazione. Ad esempio:
- Nome operazione:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626
- ID operazione:
bc4e1d412863e626
- Nome operazione:
Metodo HTTP e URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
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
Esegui questo comando:
$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
Dovresti ricevere una risposta JSON simile alla seguente:
{}
"error": { "code": 400, "message": "Operation has completed and cannot be cancelled: 'PROJECT_ID/locations/LOCATION/operations/OPERATION_ID'.", "status": "FAILED_PRECONDITION" }
Go
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Document AI Go.
Per autenticarti a Document AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Document AI Python.
Per autenticarti a Document AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.