5.5 - 良性异常

如何使用 Temporal Python SDK 将 Activity 错误标记为良性。

当 Activity 抛出预期之内或不严重的错误时,可能在日志、指标和 OpenTelemetry 追踪中产生噪音,从而使识别真正的问题变得更加困难。通过将这些错误标记为良性,可以将其从可观测性数据中排除,同时仍然在工作流逻辑中对其进行处理。

要将错误标记为良性,需要在抛出 ApplicationError 时将 category 参数设置为 ApplicationErrorCategory.BENIGN。

良性错误具有以下特点:

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 错误,比如轮询尚未就绪的外部服务,或处理预期中的、将被重试的瞬时故障,可以使用良性异常。