Los métodos de procesamiento por lotes devuelven operaciones de larga duración porque tardan más en completarse de lo que es apropiado para una respuesta de API. De esta forma, el hilo de llamada no se mantiene abierto mientras se procesan muchos documentos. La API Document AI crea un LRO cada vez que llamas a projects.locations.processors.batchProcess
a través de la API o de las bibliotecas de cliente. La LRO monitoriza el estado del trabajo de procesamiento.
Puedes usar los métodos de operaciones que proporciona la API de Document AI para comprobar el estado de las operaciones de larga duración. También puedes listar, consultar o cancelar operaciones LRO. Las bibliotecas de cliente llaman al método asíncrono internamente, lo que habilita la retrollamada. (En Python, await
está habilitado). También incluyen un parámetro de tiempo de espera. En el LRO principal devuelto por .batchProcess, se crea un LRO para cada documento (porque los límites de recuento de páginas por lote son mucho más altos que la llamada process
síncrona y pueden tardar mucho tiempo en procesarse). Cuando finaliza la LRO principal, se proporciona el estado detallado de cada LRO de documento.
Las operaciones de larga duración se gestionan a nivel de Google Cloud proyecto y ubicación. Cuando hagas una solicitud a la API, incluye el Google Cloud proyecto y la ubicación en la que se está ejecutando la operación de larga duración.
El registro de una operación de larga duración se conserva durante aproximadamente 30 días después de que finalice, lo que significa que no puedes ver ni enumerar una operación de larga duración después de ese periodo.
Obtener detalles sobre una operación de larga duración
En los siguientes ejemplos se muestra cómo obtener detalles de una operación LRO.
REST
Para obtener el estado de una operación de larga duración y ver sus detalles, llama al método projects.locations.operations.get
.
Supongamos que recibes la siguiente respuesta después de llamar a projects.locations.processors.batchProcess
:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID" }
El valor name
de la respuesta muestra que la API Document AI ha creado un LRO llamado projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID
.
También puedes obtener el nombre de la LRO enumerando las operaciones de larga duración.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud .
- LOCATION: la ubicación en la que se está ejecutando la operación de larga duración. Por ejemplo:
us
- Estados Unidoseu
- Unión Europea
- OPERATION_ID: el ID de tu operación. El ID es el último elemento del nombre de tu operación. Por ejemplo:
- Nombre de la operación:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626
- ID de operación:
bc4e1d412863e626
- Nombre de la operación:
Método HTTP y URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
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
Ejecuta el comando siguiente:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
{ "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
Para obtener más información, consulta la documentación de referencia de la API Go de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Listar operaciones de larga duración
En los siguientes ejemplos se muestra cómo enumerar los LROs de un Google Cloud proyecto y una ubicación.
REST
Para obtener una lista de las operaciones LRO de un proyecto y una ubicación, llama al método projects.locations.operations.list
. Google Cloud
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud .
- LOCATION: la ubicación en la que se están ejecutando una o varias operaciones de larga duración. Por ejemplo:
us
- Estados Unidoseu
- Unión Europea
- FILTER: (obligatorio) consulta de LROs que se van a devolver. Opciones:
- TYPE: (obligatorio) Tipo de LRO que se va a enumerar. Opciones:
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
Método HTTP y URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations?filter=TYPE=TYPE
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
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
Ejecuta el comando siguiente:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
{ "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
Para obtener más información, consulta la documentación de referencia de la API Go de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Sondear una operación de larga duración
En los siguientes ejemplos se muestra cómo sondear el estado de una LRO.
REST
Para sondear un LRO, llama repetidamente al método projects.locations.operations.get
hasta que finalice la operación. Usa un tiempo de espera entre cada solicitud de sondeo, como 10 segundos.
Antes de usar cualquiera de los datos de solicitud que se indican a continuación, haz los siguientes cambios:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación en la que se está ejecutando la operación de larga duración
- OPERATION_ID: el identificador del LRO
Método HTTP y URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente comando para sondear el estado de un LRO cada 10 segundos:
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
Deberías recibir una respuesta JSON cada 10 segundos.
Mientras la operación esté en curso, la respuesta contendrá "state": "RUNNING"
.
Cuando termine la operación, la respuesta contendrá "state": "SUCCEEDED"
y "done": true
.
PowerShell
Ejecuta el siguiente comando para sondear el estado de un LRO cada diez segundos:
$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)
Deberías recibir una respuesta JSON cada 10 segundos.
Mientras la operación esté en curso, la respuesta contendrá "state": "RUNNING"
.
Cuando termine la operación, la respuesta contendrá "state": "SUCCEEDED"
y "done": true
.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Cancelar una operación de larga duración
En los siguientes ejemplos se muestra cómo cancelar una LRO mientras se está ejecutando.
REST
Para cancelar una operación de larga duración, llama al método projects.locations.operations.cancel
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud .
- LOCATION: la ubicación en la que se está ejecutando la operación de larga duración. Por ejemplo:
us
- Estados Unidoseu
- Unión Europea
- OPERATION_ID: el ID de tu operación. El ID es el último elemento del nombre de tu operación. Por ejemplo:
- Nombre de la operación:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626
- ID de operación:
bc4e1d412863e626
- Nombre de la operación:
Método HTTP y URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
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
Ejecuta el comando siguiente:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
{}
"error": { "code": 400, "message": "Operation has completed and cannot be cancelled: 'PROJECT_ID/locations/LOCATION/operations/OPERATION_ID'.", "status": "FAILED_PRECONDITION" }
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.