我正在使用气流1.7.1.3。
我遇到并发DAG /任务问题。当DAG正在运行时,调度程序不再启动其他DAG。似乎调度程序完全冻结(不再记录日志)......直到正在运行的DAG完成。然后,触发新的DAGrun。我的不同任务是长期运行的ECS任务(约10分钟)
我使用了LocalExecutor
,我使用parallelism=32
和dag_concurrency=16
的默认配置。我使用airflow scheduler -n 20
并自动重新启动它,并为我的所有DAG声明设置'depends_on_past': False
。
有关信息,我在ECS集群中运行的容器中部署了气流。 max_threads = 2
我只有2个CPU可用。
有什么想法吗?感谢
答案 0 :(得分:1)
我也使用LocalExecutor
遇到了这个问题。这似乎是LocalExecutor
如何运作的限制。调度程序最终生成子进程(在您的情况下为32)。此外,您的调度程序每次执行执行20次迭代,因此当它到达20次运行结束时,它会等待其子进程在调度程序退出之前终止。如果存在长时间运行的子进程,则调度程序将在执行时被阻止。
对我们来说,决议是切换到CeleryExecutor
。当然,这需要为Celery后端提供更多的基础架构,管理和整体复杂性。