执行工作流后,您可以在 Google Cloud 控制台中或使用 Google Cloud CLI 访问工作流执行结果。
控制台
在 Google Cloud 控制台中,进入 Workflows 页面:
如需访问工作流的执行结果,请点击工作流的名称以转到其工作流详情页面。
如需详细了解特定执行,请在执行标签页中点击列表中的执行 ID,前往其执行详情页面。
在摘要标签页上,每个执行都包含以下信息:
如需将工作流执行记录视为步骤条目列表进行查看,请点击步骤标签页。如需了解详情,请参阅查看执行步骤的历史记录。
如需查看工作流执行的日志,请点击日志标签页。
如需过滤执行日志,请使用位于表格顶部的过滤条件字段。例如,如果只想显示失败的执行尝试,请在过滤条件的文本字段中输入
failed
。
gcloud
如需查看工作流执行的完整列表,请输入以下命令:
gcloud workflows executions list WORKFLOW_NAME
将
WORKFLOW_NAME
替换为您的工作流的名称。 复制您感兴趣的执行的 ID。如需查看工作流的执行日志,请输入以下命令:
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-ac2argument
:传递给工作流的运行时参数(如果有的话)。endTime
:执行结束时间。error
:在导致执行失败的异常中抛出的错误消息。name
:执行的完整名称,包括项目的名称、工作流的位置、工作流的名称以及执行 ID。startTime
:执行开始时间。state
:指出工作流的结束状态。status
:执行的当前或最终工作流步骤workflowRevisionID
:执行时的当前修订版本。
执行错误映射
如果在执行期间工作流在 try/except
块中抛出,但执行失败,则系统会返回描述该错误的错误映射(JSON 字典)。
在工作流执行期间抛出的错误包含标记,以帮助您确定错误的原因。例如,从连接器返回的错误可以包含两个键(tags
和 message
),如下所示:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
可以有多个代码。如需检查特定代码,您可以使用表达式。例如:
${'SystemError' in e.tags}
以字符串形式返回的访问错误数据
某些连接器和 HTTP API 会先将错误序列化为字符串,然后再返回错误。您可以使用标准库函数将载荷恢复为原始错误。例如,如需将错误字符串转换为映射,您可以使用 json.decode
和 text.encode
函数:
json.decode(text.encode(ERROR_FROM_API))
错误标记
下表介绍了不同错误标记的含义。
标记 | 说明 |
---|---|
AuthError | 为 HTTP 请求生成凭据失败时引发。 |
ConnectionError | 当与端点成功建立连接,但在数据传输期间连接出现问题时,会引发此错误。连接在收到完整响应之前终止,并且消息可能未传送到端点。重试可能不具有幂等性。 |
ConnectionFailedError | 未与 API 端点建立连接时引发;例如,由于域名不正确、DNS 解析问题或其他网络问题。重试是幂等的。 |
HttpError | HTTP 请求失败并显示 HTTP 错误状态时会引发该错误。引发此异常时,响应是包含以下元素的映射:
|
IndexError | 当序列子脚本超出范围整数时会引发该错误。 |
KeyError | 在现有键集中找到映射键时会引发该错误。 |
OperationError | 当长时间运行的操作未能成功完成时引发。 |
ParallelNestingError | 当超出并行步骤可嵌套的深度上限时,会引发此错误。 |
RecursionError | 当解释器检测到超出 调用堆栈深度上限时,会引发该错误。 |
ResourceLimitError | 资源利用率达到上限时会引发该错误。在内部引发该错误时,无法捕获此类型的错误,从而导致立即执行失败。 |
ResponseTypeError | 当长时间运行的操作返回错误类型的响应时引发。 |
SystemError | 当解释器发现内部错误时会引发该错误。 |
TimeoutError | 当系统函数在系统级别超时时会引发该错误。 |
TypeError | 在将操作或函数应用于不兼容类型的对象时引发。关联值是一个字符串,提供类型不匹配的详细信息。 |
UnhandledBranchError | 当一个或多个分支或迭代遇到最多 个未处理的运行时错误时,引发此错误。 |
ValueError | 当操作或函数收到的参数具有正确的类型但值不正确,并且该情况没有一个更精确的异常(例如 IndexError )进行说明时,就会引发该错误。 |
ZeroDivisionError | 当除法或取模运算的第二个参数为零时会引发该错误。关联值是一个字符串,指出操作数和运算的类型。 |