是否有任何优雅的方法可以检测同一dag的先前任务中是否出现异常?
我知道我可以设置TriggerRule =ALL_SUCCESS
,因此只有在执行完所有先前任务successfully
后才会启动它。
但在我的情况下,我需要触发规则为ALL_DONE
,它将启动所有有效状态,包括Failed once
。
答案 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可以继续