我有一个执行两个任务的DAG:A
和B
。
我没有在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.cfg
,dag_concurrency = 16
的任务状态为running
。
很明显我在做错事,我可以简单地将B
设置为DAG级别,并使no status
从start_date
的{{1}}运行,但这不是我要做的。想做。
或者,我可以将它们拆分为单独的DAG,但这又不是我要监视的方式。
是否可以使用DAG来处理多个任务,每个任务都有自己的B
?如果是这样,该怎么做?
更新:
我知道可以添加ShortCircuitOperator
,但这似乎仅适用于依赖于任务且存在下游任务的流程。在我的情况下,start_date
独立于A
。
答案 0 :(得分:1)
使用BranchPythonOperator
并在该任务中检查您的执行日期> ='2015-01-01'。如果为true,则应执行任务B ;否则,应执行虚拟任务。
但是,我建议使用单独的DAG。
分支文档:https://airflow.readthedocs.io/en/1.10.2/concepts.html#branching