Accede a los resultados de la ejecución del flujo de trabajo

Después de ejecutar un flujo de trabajo, puedes acceder a los resultados de la ejecución en la consola de Google Cloud o con Google Cloud CLI.

Console

  1. En la consola de Google Cloud, ve a la página Workflows.

    Ir a Workflows

  2. 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.

  3. Para obtener detalles sobre una ejecución en particular, en la pestaña Executions, haz clic en el ID de ejecución en la lista para ir a la página Execution details.

  4. En la pestaña Resumen, cada ejecución tiene la siguiente información:

    • ID de ejecución: Es el 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.
    • Se creó la ejecución: Indica cuándo se inició la ejecución.
    • Inicio de la ejecución: Es el momento en que comenzó a ejecutarse la ejecución y a ejecutar los pasos.
    • Finalización de la ejecución: Es el momento en que finalizó la ejecución.
    • Duración de la ejecución: Es el tiempo total transcurrido. Esto puede ser un indicio de errores de red o problemas de conectividad.
    • Nombre del flujo de trabajo: Es el nombre del flujo de trabajo.
    • Revisión del flujo de trabajo: Es la revisión actual en el momento de la ejecución.
    • Nivel de registro de llamadas: Es el nivel de registro de llamadas aplicado durante la ejecución. Para obtener más información, consulta Registro de llamadas.
    • Entrada: Los argumentos del entorno de ejecución que se pasan al flujo de trabajo, si corresponde.
    • Resultado: Es el resultado del flujo de trabajo. Si la ejecución falló, incluye la excepción que provocó la falla. En este documento, consulta Mapas de errores de ejecución.
  5. 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 Cómo ver el historial de los pasos de ejecución.

  6. Para ver los registros de una ejecución de flujo de trabajo, haz clic en la pestaña Registros.

  7. Para filtrar los registros de ejecución, usa el campo Filtro que se encuentra en la parte superior de la tabla. Por ejemplo, para mostrar solo los intentos de ejecución fallidos, ingresa failed en el campo de texto del filtro.

gcloud

  1. Para ver una lista completa de las ejecuciones de un flujo de trabajo, ingresa el siguiente comando:

    gcloud workflows executions list WORKFLOW_NAME
    

    Reemplaza WORKFLOW_NAME por el nombre de tu flujo de trabajo. Copia el ID de ejecución que te interesa.

  2. Para ver los registros de ejecución de un flujo de trabajo, ingresa el siguiente comando:

    gcloud workflows executions describe \
        --workflow=WORKFLOW_NAME \
        EXECUTION_ID
    

    Reemplaza lo siguiente:

    • WORKFLOW_NAME: El nombre del flujo de trabajo
    • EXECUTION_ID: El ID único de la ejecución

    Este comando muestra 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-ac2
    En el resultado, se incluye la siguiente información:

    • argument: Los argumentos del entorno de ejecución que se pasan al flujo de trabajo, si los hay
    • endTime: Cuando finalizó la ejecución
    • error: Es el mensaje de error que se genera como parte de la excepción que provocó el error de ejecución.
    • name: Es 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ón.
    • startTime: Cuándo comenzó la ejecución
    • state: Indica el estado final del flujo de trabajo.
    • status: Es el paso actual o final del flujo de trabajo de la ejecución.
    • workflowRevisionID: Es la revisión actual en el momento de la ejecución.

Mapas de errores de ejecución

Cuando un flujo de trabajo arroja un error durante la ejecución que no se detecta en un bloque try/except, la ejecución falla y se muestra un mapa de errores (un diccionario JSON) que describe el error.

Los errores que se generan durante la ejecución del flujo de trabajo contienen etiquetas para ayudarte a identificar qué los causó. Por ejemplo, el error que muestra 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 verificar una etiqueta específica, puedes usar una expresión. Por ejemplo:

${'SystemError' in e.tags}

Datos de error de acceso que se muestran como una cadena

Algunos conectores y APIs de HTTP serializarán los errores como cadenas antes de mostrarlos. Puedes usar funciones de biblioteca estándar para restablecer una carga útil en el 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 correctamente con el extremo, pero hay un problema con la conexión durante la transferencia de datos. La conexión se cierra antes de que se reciba una respuesta completa y es posible que un mensaje no se haya entregado al extremo. Es posible que los reintentos no sean idempotentes.
ConnectionFailedError Se genera cuando no se establece una conexión con el extremo de API, por ejemplo, debido a un nombre de dominio incorrecto, 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 genera esta excepción, la respuesta es un mapa con los siguientes elementos:
  • tags: Es una lista con una cadena HttpError.
  • message: Es un mensaje de error legible por humanos.
  • code: Código de estado de respuesta HTTP
  • headers: Encabezados de respuesta
  • body: Cuerpo de la respuesta
IndexError Se genera cuando un subíndice de secuencia es un número entero fuera de rango.
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 en la que se pueden anidar los pasos en paralelo.
RecursionError Se genera cuando el intérprete detecta que se superó la profundidad máxima de la pila de llamadas.
ResourceLimitError Se genera cuando se agota algún límite de recursos. Cuando se genera de forma interna, este tipo de error no se puede detectar y causa una falla de ejecución inmediata.
ResponseTypeError Se genera cuando una operación de larga duración muestra 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 tipo.
UnhandledBranchError Se genera cuando una o más ramas o iteraciones encuentran 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 una 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 operandos y la operación.

También puedes generar errores personalizados mediante la sintaxis raise.

¿Qué sigue?