首页 > 解决方案 > 我可以在 Airflow 中拥有不同开始日期的一个 DAG 下的任务吗?

问题描述

我有一个运行两个任务的 DAG:AB.

我没有指定start_dateon DAG 级别,而是将其作为属性添加到运算符(在本例中我使用的是 a PythonOperator)并将其从 DAG 字典中删除。这两项任务每天都运行。

start_dateforA是 2013-01-01,forstart_dateB2015-01-01。我的问题是 Airflow 从 2013-01-01 开始为任务 A 运行 16 天(因为我猜airflow.cfg我已经离开了默认值dag_concurrency = 16),然后它停止了。DAG 处于状态running,并且 的任务B处于状态no status

显然我做错了什么,我可以简单地设置start_dateon DAG 级别并Bstart_dateof运行A,但这不是我想要做的。

或者,我可以将它们拆分为单独的 DAG,但同样,这不是我想要监控它们的方式。

有没有办法让 DAG 有多个任务,每个任务都有自己的start_date?如果是这样,该怎么做?

更新:

我知道ShortCircuitOperator可以添加 a ,但这似乎仅适用于依赖且存在下游的任务流。在我的情况下A是独立的B

标签: airflow

解决方案


使用BranchPythonOperator并检查您的execution_date >= '2015-01-01' 的任务。如果为 true,则应执行Task B,否则应执行 Dummy Task。

在此处输入图像描述

但是,我建议使用单独的 DAG。

关于分支的文档:https ://airflow.readthedocs.io/en/1.10.2/concepts.html#branching


推荐阅读