Airflow DAG触发规则配置问题:task d、e触发条件未达预期
问题原因
你当前的配置问题出在任务e的上游依赖配置不全:
- 现有代码里
t_e的上游只有t_d,所以all_success规则仅会校验t_d的执行状态,完全不关心t_b、t_c是否成功 - 即使
t_b或t_c执行失败,只要t_d执行成功,t_e就会被触发,不符合你要求的「b、c、d全部成功才执行e」的需求
调整方案
只需要补全t_e的上游依赖,把t_b、t_c也加入t_e的上游即可,修改后的完整代码如下:
from airflow.utils.trigger_rule import TriggerRule with DAG(dag_id='test_dag', default_args=args, schedule_interval=None) as dag: t_test = PythonOperator(task_id='test', python_callable=test) t_a = PythonOperator(task_id='a', python_callable=a) t_b = PythonOperator(task_id='b', python_callable=b) t_c = PythonOperator(task_id='c', python_callable=c) # t_d的trigger_rule=ALL_DONE配置正确,不管b/c成功失败都执行 t_d = PythonOperator(task_id='d', python_callable=d, trigger_rule=TriggerRule.ALL_DONE) # t_e默认trigger_rule就是all_success,无需额外配置 t_e = PythonOperator(task_id='e', python_callable=e) # 原有依赖保留 t_test >> t_a >> [t_b, t_c] >> t_d # 补全e的上游依赖:b、c、d都作为e的上游 [t_b, t_c, t_d] >> t_e
调整后逻辑完全匹配需求:
- 无论
t_b/t_c成功/失败,t_d的ALL_DONE规则都会触发执行 t_e的上游是t_b、t_c、t_d三个,三个全部执行成功才会触发t_e
内容的提问来源于stack exchange,提问作者Nikhil Kokkula
相关产品推荐
相关产品推荐

