Airflow Dag中,某个多分支汇合的task不执行

之前才接触airflow的时候遇到这个问题,但是解决了没有记录,今天又遇到了想起来就记录下

就拿这个图举例,这是个典型的分支路最后汇合执行的task,用代码演示就是这种情况,有两条路可以执行,最后又回归同一个task。

我的dag 顺序逻辑定义是这样的:

....
if xxxxx :
  ....
else :
  ....
.....

我截图里面是我理想状态下,走任意一条路,之后最后retrain_model_by_model_info都会执行,但是这个问题就是遇到它执行,不管走的哪条路都不执行。
其实问题的关键就是TriggerRule,TriggerRule默认是ALL_SUCCESS,也就是与门,我们想要的是或门,就是只有当所有上游任务都没有失败时,当前任务才会被触发(即上游任务要么成功要么被跳过)。就是NONE_FAILED

关于TriggerRule其他的类型可以参考我这篇blog:Airflow 中的trigger_rule-CSDN博客

所以定义Operator的时候就加上这个TriggerRule就可以了

retrain_model_by_model_info = PythonOperator(
    task_id='retrain_model_by_model_info',
    provide_context=True,
    python_callable=retrain_model_by_model_info,
    trigger_rule=TriggerRule.NONE_FAILED,
    dag=dag,
)  

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-19 05:46:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-19 05:46:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-19 05:46:03       87 阅读
  4. Python语言-面向对象

    2024-06-19 05:46:03       96 阅读

热门阅读

  1. for循环

    for循环

    2024-06-19 05:46:03      38 阅读
  2. 【深度学习】TensorRT模型转换环境

    2024-06-19 05:46:03       38 阅读
  3. 大模型日报2024-06-18

    2024-06-19 05:46:03       47 阅读
  4. 深入理解 Python 类中的各种方法

    2024-06-19 05:46:03       33 阅读
  5. FFmpeg AAC文件和H264文件合成MP4/FLV文件

    2024-06-19 05:46:03       41 阅读
  6. C语言之#define #if 预处理器指令

    2024-06-19 05:46:03       37 阅读
  7. 《HTML趣味编程》专栏内资源的下载链接

    2024-06-19 05:46:03       35 阅读
  8. 2024-6-14(沉默Nginx)

    2024-06-19 05:46:03       41 阅读
  9. 嵌入式中间件_2.嵌入式中间件的分类

    2024-06-19 05:46:03       34 阅读
  10. 力扣207题“课程表”

    2024-06-19 05:46:03       27 阅读
  11. 个人关于Vue2组成的见解

    2024-06-19 05:46:03       33 阅读