Airflow不会触发与“LocalExecutor”并发的DAG

时间:2016-10-04 22:14:11

标签: python airflow

我正在使用气流1.7.1.3。

我遇到并发DAG /任务问题。当DAG正在运行时,调度程序不再启动其他DAG。似乎调度程序完全冻结(不再记录日志)......直到正在运行的DAG完成。然后,触发新的DAGrun。我的不同任务是长期运行的ECS任务(约10分钟)

我使用了LocalExecutor,我使用parallelism=32dag_concurrency=16的默认配置。我使用airflow scheduler -n 20并自动重新启动它,并为我的所有DAG声明设置'depends_on_past': False

有关信息,我在ECS集群中运行的容器中部署了气流。 max_threads = 2我只有2个CPU可用。

有什么想法吗?感谢

1 个答案:

答案 0 :(得分:1)

我也使用LocalExecutor遇到了这个问题。这似乎是LocalExecutor如何运作的限制。调度程序最终生成子进程(在您的情况下为32)。此外,您的调度程序每次执行执行20次迭代,因此当它到达20次运行结束时,它会等待其子进程在调度程序退出之前终止。如果存在长时间运行的子进程,则调度程序将在执行时被阻止。

对我们来说,决议是切换到CeleryExecutor。当然,这需要为Celery后端提供更多的基础架构,管理和整体复杂性。