我可以在一个DAG下使用不同的开始日期在Airflow中执行任务吗?

时间:2019-03-25 00:07:54

标签: airflow

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

我没有在DAG级别上指定start_date,而是将其作为属性添加到了运算符(在这种情况下,我使用的是PythonOperator),并将其从DAG字典中删除。这两个任务每天运行。

start_date的{​​{1}}是2013-01-01,而A的{​​{1}}是2015-01-01。我的问题是从2013年1月1日起,Airflow为任务A运行了16天(因为我猜在我的start_date中,我保留了默认的B),此后它停止了。 DAG的状态为airflow.cfgdag_concurrency = 16的任务状态为running

很明显我在做错事,我可以简单地将B设置为DAG级别,并使no statusstart_date的{​​{1}}运行,但这不是我要做的。想做。

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

是否可以使用DAG来处理多个任务,每个任务都有自己的B?如果是这样,该怎么做?

更新:

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

1 个答案:

答案 0 :(得分:1)

使用BranchPythonOperator并在该任务中检查您的执行日期> ='2015-01-01'。如果为true,则应执行任务B ;否则,应执行虚拟任务。

enter image description here

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

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