借助Airflow,如果下游任务失败,是否可以重新启动上游任务?这似乎违背了DAG术语的“非循环”部分。我认为这是一个普遍的问题。
背景
我正在考虑使用Airflow来管理已经手动管理的数据处理工作流程。
如果将参数x设置得太高,则有一项任务会失败,但是增大参数值会带来更好的质量结果。我们还没有找到一种计算安全但最大参数x的方法。手动执行的过程是,如果使用较低的参数失败,则重新启动作业,直到工作。
工作流程如下:
任务A-收集原始数据
任务B-为作业生成配置文件
任务C-修改配置文件参数x
任务D-运行数据处理作业
任务E-处理作业结果
任务F-生成报告
问题
如果任务D由于参数x太高而失败,我想重新运行任务C和任务D。似乎不支持此操作。我真的很感谢有关如何处理此问题的指导。
答案 0 :(得分:0)
首先:这是一个很好的问题,我想知道为什么到目前为止尚未对其进行广泛讨论
我可以想到两种可能的方法
融合Operators
:@Kris指出,Combining Operators
together似乎是最明显的解决方法
分隔顶级 DAG
s :请阅读以下内容
单独的顶级DAG方法
给予
(可能的)想法:如果您喜欢冒险
DAG
中,例如DAG-A和DAG-B TriggerDagRunOperator
触发DAG-B
ExternalTaskSensor
之后使用TriggerDagRunOperator
trigger_rule=all_done
在任务B之后放置一个BranchPythonOperator
BranchPythonOperator
应该分支到另一个TriggerDagRunOperator
,然后再调用DAG-A!有用的参考
EDIT-1
这是实现相似行为的简单得多的方法
How can you re-run upstream task if a downstream task fails in Airflow (using Sub Dags)