2016-10-04 126 views
1

我正在使用气流1.7.1.3。气流不会触发与`LocalExecutor`同时发生的DAG

我遇到并发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可用。

任何想法?谢谢

回答

0

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

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