5.5 - 良性异常
如何使用 Temporal Python SDK 将 Activity 错误标记为良性。
当 Activity 抛出预期之内或不严重的错误时,可能在日志、指标和 OpenTelemetry 追踪中产生噪音,从而使识别真正的问题变得更加困难。通过将这些错误标记为良性,可以将其从可观测性数据中排除,同时仍然在工作流逻辑中对其进行处理。
要将错误标记为良性,需要在抛出 ApplicationError 时将 category 参数设置为 ApplicationErrorCategory.BENIGN。
良性错误具有以下特点:
- Activity 失败日志降级为 DEBUG 级别
- 不发送 Activity 失败指标
- 不将 OpenTelemetry 失败状态设置为 ERROR
from temporalio import activity
from temporalio.exceptions import ApplicationError, ApplicationErrorCategory
@activity.defn
async def my_activity() -> str:
try:
return await call_external_service()
except Exception as err:
raise ApplicationError(
message=str(err),
# Mark this error as benign since it's expected
category=ApplicationErrorCategory.BENIGN,
)对于作为正常操作一部分而经常发生的 Activity 错误,比如轮询尚未就绪的外部服务,或处理预期中的、将被重试的瞬时故障,可以使用良性异常。