我有一个问题,即使清除了子任务,我也需要运行父母。例如:如果我有A->B->C->D->E->F
,如果任务E
失败并且已被某个人手动清除,那么任务A
也应自动清除。我不确定是否有任何直接方法可以实现这一目标。
答案 0 :(得分:0)
这不能通过气流完成。 气流执行DAG(有向无环图),因此DAG中不能包含这种模式。
答案 1 :(得分:0)
您无法使用这种类型的模式,您将获得异常
AirflowDagCycleException: Cycle detected in DAG
但是半自动解决方案/解决方法如何。假设您具有DAG结构,其中任务F
是任务A
和E
的下游。即this is how your DAG will look like。
A -> B -> C -> D -> E -> F
A -> F
现在,如果任务F
失败,则需要先暂停DAG ,然后递归清除任务A
without recursion并清除任务F
。在这种情况下,任务F
不能在其两个父级都处于成功状态之前开始运行。因此,任务A
将被触发,但任务B - E
不会被触发,因为您尚未清除任务的状态成功。
答案 2 :(得分:0)
这可能发生。您可以在任务级别设置on_failure_callback参数。此函数可以是任何代码。在该功能中,您可以轻松清除以前的任务,然后再次运行它们。