Administra operaciones de larga duración (LRO)
Las operaciones de larga duración se muestran mediante llamadas a métodos de procesamiento por lotes, ya que tardan más tiempo en completarse de lo que es apropiado para una respuesta de la API. Esto se hace para que el subproceso de llamada no permanezca abierto mientras se procesan muchos documentos. La API de Document AI crea una LRO cada vez que llamas a projects.locations.processors.batchProcess
a través de la API o las bibliotecas cliente. La LRO realiza un seguimiento del estado del trabajo de procesamiento.
Puedes usar los métodos de operaciones que proporciona la API de Document AI para verificar el estado de las LRO. También puedes enumerar, sondear o cancelar las LRO. Las bibliotecas cliente llaman a la sondeo de método asíncrono de forma interna, lo que habilita la devolución de llamada. (Para Python, await
está habilitado). También incluyen un parámetro de tiempo de espera. Dentro de la LRO principal que muestra .batchProcess, se crea una LRO para cada documento (porque los límites de recuento de páginas por lotes son mucho más altos que la llamada a process
de sincronización y pueden tardar mucho tiempo en procesarse). Cuando finaliza la LRO principal, se proporciona el estado detallado de cada LRO de documento.
Las LRO se administran a nivel del Google Cloud proyecto y de la ubicación. Cuando realices una solicitud a la API, incluye el proyecto Google Cloud y la ubicación en la que se ejecuta la LRO.
El registro de una LRO se conserva aproximadamente 30 días después de que esta finaliza, lo que significa que no puedes ver ni enumerar una LRO después de ese punto.
Obtén detalles sobre una operación de larga duración
En los siguientes ejemplos, se muestra cómo obtener detalles sobre una LRO.
REST
Para obtener el estado y ver los detalles de una LRO, 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
en la respuesta muestra que la API de Document AI creó una LRO llamada projects/PROJECT_NUMBER/locations/LOCATION/operations/OPERATION_ID
.
También puedes recuperar el nombre de la LRO si enumeras las operaciones de larga duración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El Google Cloud ID de tu proyecto.
- LOCATION: Es la ubicación en la que se ejecuta la LRO, por ejemplo:
us
: Estados Unidoseu
: Unión Europea
- OPERATION_ID: El ID de la operación. El ID es el último elemento del nombre de la 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 siguiente 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
Ejecuta el siguiente 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
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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 de Document AI Go.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para obtener más información, consulta la documentación de referencia de la API de Document AI Python.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Enumera las operaciones de larga duración
En los siguientes ejemplos, se muestra cómo enumerar las LRO de un Google Cloud proyecto y una ubicación.
REST
Para mostrar una lista de las LRO de un Google Cloud proyecto y una ubicación, llama al método projects.locations.operations.list
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El Google Cloud ID de tu proyecto.
- LOCATION: Es la ubicación en la que se ejecutan una o más LRO, por ejemplo:
us
: Estados Unidoseu
: Unión Europea
- FILTER: (Obligatorio) Es la consulta para que se muestren las LRO. Opciones:
- TYPE: (Obligatorio) Es el tipo de LRO que se mostrará en la lista. 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 siguiente 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
Ejecuta el siguiente 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
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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 de Document AI Go.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para obtener más información, consulta la documentación de referencia de la API de Document AI Python.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Cómo 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 una LRO, llama de forma reiterada al método projects.locations.operations.get
hasta que finalice la operación. Usa una retirada entre cada solicitud de sondeo, por ejemplo, 10 segundos.
Antes de usar cualquiera de los datos de solicitud que aparecen a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El Google Cloud ID de tu proyecto
- LOCATION: la ubicación donde se ejecuta la LRO
- OPERATION_ID: el identificador de la 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 una 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 se esté ejecutando, la respuesta contendrá "state": "RUNNING"
.
Cuando finalice la operación, la respuesta contendrá "state": "SUCCEEDED"
y "done": true
.
PowerShell
Ejecuta el siguiente comando para sondear el estado de una 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 se esté ejecutando, la respuesta contendrá "state": "RUNNING"
.
Cuando finalice 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 de Document AI Python.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Cómo cancelar una operación de larga duración
En los siguientes ejemplos, se muestra cómo cancelar una LRO mientras se ejecuta.
REST
Para cancelar una LRO, llama al método projects.locations.operations.cancel
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El Google Cloud ID de tu proyecto.
- LOCATION: Es la ubicación en la que se ejecuta la LRO, por ejemplo:
us
: Estados Unidoseu
: Unión Europea
- OPERATION_ID: El ID de la operación. El ID es el último elemento del nombre de la 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 siguiente 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
Ejecuta el siguiente 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
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{}
"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 de Document AI Go.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para obtener más información, consulta la documentación de referencia de la API de Document AI Python.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.