Cómo acceder 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 Ejecuciones, haz clic en el ID de ejecución de la lista para ir a su página Detalles de la ejecución.

  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 ejecución: Indica cuándo comenzó la ejecución y la ejecución de los pasos.
    • Execution end: Es la fecha y hora en que finalizó la ejecución.
    • Duración de la ejecución: Tiempo total transcurrido. Esto puede indicar 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 que se aplica durante la ejecución. Para obtener más información, consulta Registro de llamadas.
    • Input: Son los argumentos del entorno de ejecución que se pasan al flujo de trabajo, si corresponde.
    • Output: Es el resultado del flujo de trabajo. Si falló la ejecución, 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 la ejecución de un flujo de trabajo, haz clic en la pestaña Registros.

  7. Para filtrar los registros de ejecución, usa el campo Filtro 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 de la 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: 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: Argumentos del entorno de ejecución que se pasan al flujo de trabajo, si hay alguno
    • endTime: Cuándo finalizó la ejecución
    • error: Es el mensaje de error que se arroja como parte de la excepción que provocó la falla de la 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 de flujo de trabajo actual o final 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 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 que devuelve 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 devolverlos. Puedes usar funciones de biblioteca estándar para restablecer 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 correctamente una conexión 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 no se haya entregado un mensaje 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 algún otro problema de red. Los reintentos son idempotentes.
HttpError Se genera cuando falla una solicitud HTTP con un estado de error HTTP. Cuando se genera esta excepción, la respuesta es un mapa con los siguientes elementos:
  • tags: Lista con la cadena HttpError
  • message: 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 el subíndice de una secuencia es un número entero fuera del 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 a la que se pueden anidar los pasos paralelos.
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 internamente, este tipo de error no se puede detectar y provoca una falla inmediata 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 una función del sistema agota el tiempo de espera 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 brinda 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 una cantidad máxima.
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 operandos y la operación.

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

¿Qué sigue?