Airflow 获取有关\u失败\u回调上下文的异常详细信息
是否有任何方法可以获取故障回调时气流Airflow 获取有关\u失败\u回调上下文的异常详细信息,airflow,Airflow,是否有任何方法可以获取故障回调时气流上的异常详细信息 我注意到它不是上下文的一部分。我想创建一个通用的异常处理机制,它可以发布有关错误的信息,包括有关异常的详细信息。我现在已经设法触发/执行回调并发布到Slack,但无法发布异常详细信息 谢谢。我认为可能无法在回调中获取异常详细信息 #悲观地处理回调 尝试: 如果self.state==state.UP\u FOR\u RETRY和task.on\u RETRY\u回调: 任务。在\u重试\u回调(上下文) 如果self.state==state
上的异常详细信息
我注意到它不是上下文的一部分。我想创建一个通用的异常处理机制,它可以发布有关错误的信息,包括有关异常的详细信息。我现在已经设法触发/执行回调并发布到Slack,但无法发布异常详细信息
谢谢。我认为可能无法在回调中获取异常详细信息
#悲观地处理回调
尝试:
如果self.state==state.UP\u FOR\u RETRY和task.on\u RETRY\u回调:
任务。在\u重试\u回调(上下文)
如果self.state==state.FAILED和task.on\u failure\u回调:
task.on\u失败\u回调(上下文)
e3除外:
logging.error(“执行回调时失败”)
logging.exception(e3)
将错误添加到上下文中。因此,您只需执行以下操作:
context.get("exception")
不幸的是,您似乎无法从上下文中获得堆栈跟踪或类似的内容。可以向DAG和/或单个任务提供一个on\u failure\u回调
在第一种情况下(提供给DAG),在上下文中没有'exception'
(参数Airflow使用调用您的on\u failure\u callback
)
在第二种情况下(提供给任务),存在
包含的对象应该是python异常
。
从中获取类似堆栈跟踪的内容是非常不直观的,但从中,我使用以下方法获得相当可读的堆栈跟踪:
import traceback
...
exception = context.get('exception')
formatted_exception = ''.join(
traceback.format_exception(etype=type(exception),
value=exception, tb=exception.__traceback__
)
).strip()
我只得到无
。