我有一个运行两个任务的 DAG:A
and B
.
而不是指定start_date
在 DAG 级别上,我已将其作为属性添加到运算符(我正在使用PythonOperator
在本例中)并将其从 DAG 字典中删除。这两个任务每天都会运行。
The start_date
for A
是 2013-01-01 并且start_date
for B
是 2015 年 1 月 1 日。我的问题是 Airflow 为任务 A 运行了 16 天(因为我猜在我的airflow.cfg
我保留了默认值dag_concurrency = 16
)从 2013 年 1 月 1 日起,此后停止。 DAG 处于状态running
以及任务B
处于状态no status
.
显然我做错了什么,我可以简单地设置start_date
在 DAG 级别上并且有B
运行从start_date
of A
,但这不是我想要做的。
或者,我可以将它们拆分为单独的 DAG,但同样,这不是我想要监控它们的方式。
有没有办法让 DAG 包含多个任务,每个任务都有自己的任务start_date
?如果是这样,该怎么做?
UPDATE:
我知道一个ShortCircuitOperator https://airflow.apache.org/code.html#airflow.operators.python_operator.ShortCircuitOperator可以添加,但这似乎仅适用于相互依赖且存在下游的任务流。就我而言A
独立于B
.
Use BranchPythonOperator https://airflow.readthedocs.io/en/1.10.2/code.html#airflow.operators.python_operator.BranchPythonOperator并检查您的任务执行日期>= '2015-01-01' 或不。如果为 true 则应该执行Task B,如果不是,它应该执行一个虚拟任务。
不过,我建议使用单独的 DAG。
关于分支的文档:https://airflow.readthedocs.io/en/1.10.2/concepts.html#branching https://airflow.readthedocs.io/en/1.10.2/concepts.html#branching
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)