如何查找气流DAG的先前任务中是否引发了异常?

时间:2018-04-16 13:37:18

标签: python airflow directed-acyclic-graphs

是否有任何优雅的方法可以检测同一dag的先前任务中是否出现异常?

我知道我可以设置TriggerRule =ALL_SUCCESS,因此只有在执行完所有先前任务successfully后才会启动它。

但在我的情况下,我需要触发规则为ALL_DONE,它将启动所有有效状态,包括Failed once

1 个答案:

答案 0 :(得分:0)

在我看来,您的问题可以通过添加一个中间任务作为第一个任务的下游依赖项trigger_rule=all_failed来解决。然后将此中间任务设置为您下一个任务的附加upstream_dependency

这可能如下所示:

task_1 = Operator()
task_1_on_fail = Operator(trigger_rule='all_failed')
task_1 >> task_1_on_fail

task_2 = Operator()
task_2_on_fail = Operator(trigger_rule='all_failed')
task_2 >> task_2_on_fail

collection_task = Operator(trigger_rule='all_done')
collection_task.set_upstream([task_1, task_1_on_fail, task_2, task_2_on_fail])

在上游任务成功的情况下,_on_fail任务应被标记为跳过,这意味着collection_task将正常运行。如果上游任务不成功,则_on_fail任务将首先运行,之后collection_task可以继续