Después de ejecutar un flujo de trabajo, puedes acceder a los resultados de la ejecución en la Google Cloud consola o con la CLI de Google Cloud.
Consola
En la Google Cloud consola, ve a la página Flujos de trabajo.
Para acceder a los resultados de la ejecución de un flujo de trabajo, haz clic en su nombre para ir a la página Detalles del flujo de trabajo.
Para obtener información sobre una ejecución concreta, en la pestaña Ejecuciones, haz clic en el ID de la ejecución de la lista para ir a la página Detalles de la ejecución.
En la pestaña Resumen, cada ejecución tiene la siguiente información:
- ID de ejecución: identificador único de la ejecución del flujo de trabajo.
- Estado de ejecución: indica el estado final del flujo de trabajo, incluido el paso actual o final del flujo de trabajo.
- Ejecución creada: cuándo se inició la ejecución.
- Inicio de ejecución: momento en el que la ejecución empezó a realizarse y a ejecutar los pasos.
- Fin de la ejecución: cuándo finalizó la ejecución.
- Duración de la ejecución: tiempo total transcurrido. Esto puede indicar que hay errores de red o problemas de conectividad.
- Nombre del flujo de trabajo: el nombre del flujo de trabajo.
- Revisión del flujo de trabajo: la revisión actual en el momento de la ejecución.
- Nivel de registro de llamadas: el nivel de registro de llamadas aplicado durante la ejecución. Para obtener más información, consulta Registro de llamadas.
- Entrada: los argumentos de tiempo de ejecución que se han transferido al flujo de trabajo (si los hay).
- Salida: la salida del flujo de trabajo. Si la ejecución ha fallado, incluye la excepción que ha provocado el fallo. En este documento, consulta Mapas de errores de ejecución.
Para ver el historial de ejecución del flujo de trabajo como una lista de entradas de pasos, haz clic en la pestaña Pasos. Para obtener más información, consulta Ver el historial de los pasos de ejecución.
Para ver los registros de una ejecución de flujo de trabajo, haz clic en la pestaña Registros.
Para filtrar los registros de ejecución, usa el campo Filtrar situado en la parte superior de la tabla. Por ejemplo, para mostrar solo los intentos de ejecución fallidos, introduce
failed
en el campo de texto del filtro.
gcloud
Para ver una lista completa de las ejecuciones de un flujo de trabajo, introduce el siguiente comando:
gcloud workflows executions list WORKFLOW_NAME
Sustituye
WORKFLOW_NAME
por el nombre de tu flujo de trabajo. Copia el ID de ejecución de la ejecución que te interese.Para ver los registros de ejecución de un flujo de trabajo, introduce el siguiente comando:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_ID
Haz los cambios siguientes:
WORKFLOW_NAME
: el nombre del flujo de trabajoEXECUTION_ID
: ID único de la ejecución
Este comando devuelve un resultado similar al siguiente:
argument: 'null' endTime: '2022-07-19T12:40:07.070039707Z' error: context: |- The argument of 'in' must be a dict or an array; got: null in step "checkSearchTermInInput", routine "main", line: 12 payload: "{"message":"The argument of 'in' must be a dict or an array; got: null"
,"tags":["TypeError"]}" stackTrace: elements: - position: column: '26' length: '24' line: '12' routine: main step: checkSearchTermInInput name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/17ffc89c-0a27-4d2f-8356-e681d949a3d3 startTime: '2022-07-19T12:40:07.024823663Z' state: FAILED status: currentSteps: - routine: main step: checkSearchTermInInput workflowRevisionId: 000001-ac2argument
: los argumentos de tiempo de ejecución transferidos al flujo de trabajo (si los hay)endTime
: cuando finalizó la ejecuciónerror
: el mensaje de error que se ha generado como parte de la excepción que ha provocado un error en la ejecución.name
: el nombre completo de la ejecución, incluido el nombre del proyecto, la ubicación del flujo de trabajo, el nombre del flujo de trabajo y el ID de ejecuciónstartTime
: cuándo empezó la ejecuciónstate
: indica el estado final del flujo de trabajo.status
: el paso del flujo de trabajo actual o final de la ejecuciónworkflowRevisionID
: la revisión actual en el momento de la ejecución
Mapas de errores de ejecución
Cuando un flujo de trabajo genera un error durante la ejecución que no se detecta en un bloque try/except
, la ejecución falla y se devuelve un mapa de errores (un diccionario JSON) que describe el error.
Los errores que se producen durante la ejecución del flujo de trabajo contienen etiquetas que te ayudan a identificar la causa del error. Por ejemplo, el error devuelto por un conector puede tener dos claves (tags
y message
) similares a las siguientes:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
Puede haber más de una etiqueta. Para buscar una etiqueta concreta, puedes usar una expresión. Por ejemplo:
${'SystemError' in e.tags}
Datos de error de acceso devueltos como una cadena
Algunos conectores y APIs HTTP serializarán los errores como cadenas antes de devolverlos. Puedes usar funciones de biblioteca estándar para restaurar una carga útil al error original. Por ejemplo, para convertir una cadena de error en un mapa, puedes usar las funciones json.decode
y text.encode
:
json.decode(text.encode(ERROR_FROM_API))
Etiquetas de error
En la siguiente tabla se describe el significado de las diferentes etiquetas de error.
Etiqueta | Descripción |
---|---|
AuthError | Se genera cuando falla la generación de credenciales para una solicitud HTTP. |
ConnectionError | Se genera cuando se establece una conexión con el endpoint, pero hay un problema con la conexión durante la transferencia de datos. La conexión se termina antes de que se reciba una respuesta completa y es posible que no se haya entregado un mensaje al endpoint. Es posible que los reintentos no sean idempotentes. |
ConnectionFailedError | Se genera cuando no se establece una conexión con el endpoint de la API. Por ejemplo, debido a un nombre de dominio incorrecto, a problemas de resolución de DNS o a otros problemas de red. Los reintentos son idempotentes. |
HttpError | Se genera cuando una solicitud HTTP falla
con un estado de error HTTP. Cuando se produce esta excepción, la
respuesta es un mapa con los siguientes elementos:
|
IndexError | Se genera cuando el subíndice de una secuencia es un número entero fuera del intervalo. |
KeyError | Se genera cuando no se encuentra una clave de mapa en el conjunto de claves existentes. |
OperationError | Se genera cuando una operación de larga duración finaliza sin éxito. |
ParallelNestingError | Se genera cuando se supera la profundidad máxima de anidación de los pasos paralelos. |
RecursionError | Se genera cuando el intérprete detecta que se ha superado la profundidad máxima de la pila de llamadas. |
ResourceLimitError | Se genera cuando se agota algún límite de recursos. Cuando se produce internamente, este tipo de error no se puede detectar y provoca un fallo inmediato en la ejecución. |
ResponseTypeError | Se genera cuando una operación de larga duración devuelve una respuesta del tipo incorrecto. |
SystemError | Se genera cuando el intérprete encuentra un error interno. |
TimeoutError | Se genera cuando se agota el tiempo de espera de una función del sistema a nivel del sistema. |
TypeError | Se genera cuando se aplica una operación o función a un objeto de tipo incompatible. El valor asociado es una cadena que proporciona detalles sobre la discrepancia de tipos. |
UnhandledBranchError | Se genera cuando una o varias ramas o iteraciones se encuentran con un error de tiempo de ejecución no controlado hasta un número máximo. |
ValueError | Se genera cuando una operación o función recibe un argumento que tiene el
tipo correcto, pero un valor incorrecto, y la situación no se describe
con una excepción más precisa, como IndexError . |
ZeroDivisionError | Se genera cuando el segundo argumento de una operación de división o módulo es cero. El valor asociado es una cadena que indica el tipo de los operandos y la operación. |
También puedes generar errores personalizados
con la sintaxis raise
.
Siguientes pasos
- Descripción general de la depuración
- Problemas conocidos de los flujos de trabajo
- Enviar registros de ejecución a Cloud Logging
- Solucionar problemas