气流:仅允许一个任务实例

时间:2019-06-03 17:44:57

标签: airflow

DAG Tree view

有没有一种方法可以指定一个任务只能同时运行一次?那么在DAG并发为4的树上,Airflow将启动任务4,而不是任务2的第二个实例?

此DAG有点特殊,因为任务之间没有顺序。这些任务是独立的,但在目的上相关,因此保存在一个DAG中,从而新创建了过多的单任务DAG。

max_active_runs是2,而dag_concurrency是4。我希望它启动所有4个任务,并且仅在完成上一次运行中的相同任务时才在下一个任务中启动。

4 个答案:

答案 0 :(得分:1)

从官方docs获取触发规则:

depends_on_past(布尔值)设置为True时,如果先前的任务计划未成功,则不会触发任务。

因此将来的DAG将在执行之前等待之前的DAG成功完成。

答案 1 :(得分:1)

Airflow operator documentation描述参数task_concurrency。只需将其设置为一个即可。

答案 2 :(得分:0)

我可能误解了您的问题,但是我相信您希望所有任务都在单个dagrun中完成,然后再在下一个dagrun中开始执行任务。因此,DAG仅在上一次执行完成后才执行。

在这种情况下,您可以使用dag的max_active_runs参数来限制允许运行的DAG并发实例的数量。

此处有更多信息(请参阅最后一个点):https://airflow.apache.org/faq.html#why-isn-t-my-task-getting-scheduled

  

max_active_runs定义允许DAG运行的并发实例数。

答案 3 :(得分:0)

在[核心]下的airflow.cfg中。您会发现

  

dag_concurrency = 16   //调度程序允许并发运行的任务实例数

您可以随意将其更改为所需的内容。