在Apache Airflow中运行32个以上的并发任务

时间:2018-12-05 20:29:18

标签: python airflow

我正在运行Apache Airflow 1.8.1。我想在我的实例上运行32个以上的并发任务,但是无法使任何配置正常工作。

我正在使用CeleryExecutor,UI中的Airflow配置显示parallelismdag_concurrency为64,并且我已经多次重启了Airflow Scheduler,Web服务器和工作程序(我实际上是在测试这可以在Vagrant机器上本地进行,但也已经在EC2实例上进行了测试。

airflow.cfg

# The amount of parallelism as a setting to the executor. This defines
# the max number of task instances that should run simultaneously
# on this airflow installation
parallelism = 64

# The number of task instances allowed to run concurrently by the scheduler
dag_concurrency = 64

示例DAG。我已经在DAG中直接使用concurrency参数进行了尝试。

from datetime import datetime

from airflow import DAG
from airflow.operators.bash_operator import BashOperator

dag = DAG(
    'concurrency_dev',
    default_args={
        'owner': 'airflow',
        'depends_on_past': False,
        'start_date': datetime(2018, 1, 1),
    },
    schedule_interval=None,
    catchup=False
)

for i in range(0, 40):
    BashOperator(
        task_id='concurrency_dev_{i}'.format(i=i),
        bash_command='sleep 60',
        dag=dag
    )

无论如何,同时只能执行32个任务。

enter image description here

1 个答案:

答案 0 :(得分:3)

如果您有2个工作人员和celeryd_concurrency = 16,则您只能执行32个任务。如果non_pooled_task_slot_count = 32也会受到限制。 当然,不仅在服务器和调度程序上,parallelismdag_concurrency都需要设置为32以上。