访问工作流执行结果

执行工作流后,您可以在 Google Cloud 控制台中或使用 Google Cloud CLI 访问工作流执行结果。

控制台

  1. 在 Google Cloud 控制台中,进入 Workflows 页面:

    进入 Workflows

  2. 如需访问工作流的执行结果,请点击工作流的名称以转到其工作流详情页面。

  3. 如需详细了解特定执行,请在执行标签页中点击列表中的执行 ID,前往其执行详情页面。

  4. 摘要标签页上,每个执行都包含以下信息:

    • 执行 ID:工作流执行的唯一标识符。
    • 执行状态:指示工作流的结束状态,包括当前或最终工作流步骤。
    • 执行创建时间:执行作业发起的时间。
    • 执行开始:执行作业开始运行和执行步骤的时间。
    • 执行结束:执行结束时间。
    • 执行时长:经过的总时间。这可能表示网络错误或连接问题。
    • 工作流名称:工作流名称。
    • 工作流修订版本:执行时的当前修订版本。
    • 调用日志级别:在执行期间应用的调用日志记录级别。如需了解详情,请参阅通话日志记录
    • 输入:传递给工作流的运行时参数(如果有的话)。
    • 输出:工作流的输出。如果执行失败,则包含导致执行失败的异常。在本文档中,请参阅执行错误映射
  5. 如需将工作流执行记录视为步骤条目列表进行查看,请点击步骤标签页。如需了解详情,请参阅查看执行步骤的历史记录

  6. 如需查看工作流执行的日志,请点击日志标签页。

  7. 如需过滤执行日志,请使用位于表格顶部的过滤条件字段。例如,如果只想显示失败的执行尝试,请在过滤条件的文本字段中输入 failed

gcloud

  1. 如需查看工作流执行的完整列表,请输入以下命令:

    gcloud workflows executions list WORKFLOW_NAME
    

    WORKFLOW_NAME 替换为您的工作流的名称。 复制您感兴趣的执行的 ID。

  2. 如需查看工作流的执行日志,请输入以下命令:

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

    替换以下内容:

    • WORKFLOW_NAME:工作流的名称
    • EXECUTION_ID:执行的唯一 ID。

    该命令会返回类似于以下内容的输出:

    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
    输出会包含以下信息:

    • argument:传递给工作流的运行时参数(如果有的话)。
    • endTime:执行结束时间。
    • error:在导致执行失败的异常中抛出的错误消息。
    • name:执行的完整名称,包括项目的名称、工作流的位置、工作流的名称以及执行 ID。
    • startTime:执行开始时间。
    • state:指出工作流的结束状态。
    • status:执行的当前或最终工作流步骤
    • workflowRevisionID:执行时的当前修订版本。

执行错误映射

如果在执行期间工作流在 try/except中抛出,但执行失败,则系统会返回描述该错误的错误映射(JSON 字典)。

在工作流执行期间抛出的错误包含标记,以帮助您确定错误的原因。例如,从连接器返回的错误可以包含两个键(tagsmessage),如下所示:

{'tags': ['SystemError'], 'message': 'an error has occurred'}

可以有多个代码。如需检查特定代码,您可以使用表达式。例如:

${'SystemError' in e.tags}

以字符串形式返回的访问错误数据

某些连接器和 HTTP API 会先将错误序列化为字符串,然后再返回错误。您可以使用标准库函数将载荷恢复为原始错误。例如,如需将错误字符串转换为映射,您可以使用 json.decodetext.encode 函数:

json.decode(text.encode(ERROR_FROM_API))

错误标记

下表介绍了不同错误标记的含义。

标记 说明
AuthError 为 HTTP 请求生成凭据失败时引发。
ConnectionError 当与端点成功建立连接,但在数据传输期间连接出现问题时,会引发此错误。连接在收到完整响应之前终止,并且消息可能未传送到端点。重试可能不具有幂等性。
ConnectionFailedError 未与 API 端点建立连接时引发;例如,由于域名不正确、DNS 解析问题或其他网络问题。重试是幂等的。
HttpError HTTP 请求失败并显示 HTTP 错误状态时会引发该错误。引发此异常时,响应是包含以下元素的映射:
  • tags - 包含 HttpError 字符串的列表
  • message - 人类可读的错误消息
  • codeHTTP 响应状态代码。
  • headers—响应标头
  • body—响应正文
IndexError 当序列子脚本超出范围整数时会引发该错误。
KeyError 在现有键集中找到映射键时会引发该错误。
OperationError 当长时间运行的操作未能成功完成时引发。
ParallelNestingError 当超出并行步骤可嵌套的深度上限时,会引发此错误。
RecursionError 当解释器检测到超出 调用堆栈深度上限时,会引发该错误。
ResourceLimitError 资源利用率达到上限时会引发该错误。在内部引发该错误时,无法捕获此类型的错误,从而导致立即执行失败。
ResponseTypeError 当长时间运行的操作返回错误类型的响应时引发。
SystemError 当解释器发现内部错误时会引发该错误。
TimeoutError 当系统函数在系统级别超时时会引发该错误。
TypeError 在将操作或函数应用于不兼容类型的对象时引发。关联值是一个字符串,提供类型不匹配的详细信息。
UnhandledBranchError 当一个或多个分支或迭代遇到最多 个未处理的运行时错误时,引发此错误。
ValueError 当操作或函数收到的参数具有正确的类型但值不正确,并且该情况没有一个更精确的异常(例如 IndexError)进行说明时,就会引发该错误。
ZeroDivisionError 当除法或取模运算的第二个参数为零时会引发该错误。关联值是一个字符串,指出操作数和运算的类型。

您还可以使用 语法raise引发自定义异常。

后续步骤