airflow - 气流触发规则任务依赖
问题描述
d
在下面显示的 DAG 中,无论任务b
&c
是成功还是失败,我都想执行任务,但是对于任务e
If tasks b
,c
&d
是成功的,那么只有它应该被触发。DAG 图像
写在下面的代码,但它不工作:
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 = PythonOperator(task_id='d', python_callable=d, trigger_rule=TriggerRule.ALL_DONE)
t_e = PythonOperator(task_id='e', python_callable=e, trigger_rule='all_success')
t_test >> t_a >> [t_b, t_c] >> t_d >> t_e
解决方案
您需要在单独的语句中对工作流树的分支进行编码。
# execute task d no matter whether tasks b & c succeeded or failed
t_test >> t_a >> [t_b, t_c] >> t_d
# execute task e if tasks b, c & d succeeded
t_e << [t_b, t_c, t_d]
推荐阅读
- linux - install4j 创建的包未被识别为较新的包
- c# - 是否可以从使用 dotnet build 创建的 .NET 程序集中删除完整路径?
- r - 加快data.table的子集化和数千次回归的实现
- javascript - 使用 JavaScript 将文件夹上传到服务器
- c++ - 将函数作为参数传递。C++
- azure - 联接查询 cosmos DB 中的两个文档
- javascript - 通过登录“隐藏”安全漏洞的旧javascript库?
- reactjs - 开玩笑 - 找不到模块 ./fonts/galio.ttf 映射为
- python - PlotCurveItem 和 SetLogMode 的问题
- fix-protocol - Quickfix破解如何实现OnMessage(ResendRequest)?