我有一个如图所示的 Airflow 任务管道。 task1_error_handler
& task2_error_handler
是错误处理任务,只有在直接链接的任务失败时才应该运行。我已经为这些任务设置了 ONE_FAILED 触发规则。但似乎在 task1
上出错触发两个错误处理程序。我只需要触发task1_error_handler
.
所有任务都是自定义操作符和以 status
结尾的任务 ID是定制传感器。
我应该如何实现这一目标?
最佳答案
task1
上的错误导致两个错误处理程序都发生,因为 task2
位于 task1
的下游, 制作 task1
任务的父级 task2
.
您的触发规则是 ONE_FAILED
对于两者 task1
和 task2
,这会导致问题,因为 ONE_FAILED
的定义是:
fires as soon as at least one parent has failed, it does not wait for all parents to be done
话虽如此,您只需要
task1_error_handler
如果 task1
触发失败。不幸的是,这不能通过更改触发规则轻松完成,因为您无法像当前那样直接链接条件任务。您最好的选择是:
task2
的错误处理程序触发规则,而是使用 on_failure_callback
调用错误处理程序。 关于触发直联任务失败的 Airflow 错误处理任务触发规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55069155/