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()


我只得到