Python 运行“airflow scheduler”将启动33个计划程序进程
当将Python 运行“airflow scheduler”将启动33个计划程序进程,python,airflow,Python,Airflow,当将LocalExecutor与MySQL后端一起使用时,在my Centos 6 box上运行airflow scheduler会创建33个调度程序进程,例如:。 部署55362 13.5 1.8 574224 73272?Sl 18:59 7:42/usr/local/bin/python2.7/usr/local/bin/afflow调度器 部署55372 0.0 1.5 567928 60552?Sl 18:59 0:00/usr/local/bin/python2.7/usr/loc
LocalExecutor
与MySQL
后端一起使用时,在my Centos 6 box上运行airflow scheduler
会创建33个调度程序进程,例如:。
部署55362 13.5 1.8 574224 73272?Sl 18:59 7:42/usr/local/bin/python2.7/usr/local/bin/afflow调度器
部署55372 0.0 1.5 567928 60552?Sl 18:59 0:00/usr/local/bin/python2.7/usr/local/bin/afflow调度器
部署55373 0.0 1.5 567928 60540?Sl 18:59 0:00/usr/local/bin/python2.7/usr/local/bin/afflow调度器
...
这些进程不同于执行进程和gunicorn主进程和工作进程。
使用SequentialExecutor
(sqlite
后端)运行它只会启动一个调度程序进程。气流仍然有效(DAG正在运行),但这些过程的数量让我觉得有些问题。
当我运行
时,从作业中选择*state='running'在数据库中,仅返回5行。
这正常吗?是的,这正常。这些是调度程序进程。您可以使用气流.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 = 32
这些是从调度程序中派生出来的,其pid可以在airflow scheduler.pid文件中找到
所以你看到的32+1=33个过程
希望这能消除你的疑虑
干杯 从v1.10.3开始,这就是我发现的。我的设置是:
parallelism = 32
max_threads = 4
共有
- 1(主要)
- 32(遗嘱执行人)+
- 1(dag_处理器管理器)+
- 4(dag处理器)
=38个进程 谢谢你,普里扬克!您完全正确,更改parallelism参数会更改这些调度程序进程的数量。我想我很困惑,我认为并行性指的是实际运行任务的执行者进程。@CollinMeyers他们是“执行者”进程。它们只是在PID列表中被命名为“调度程序”。如果为LocalExecutor启动一个调度程序,则只有一个调度程序将运行。嘿,我讨厌那些dag处理器,它们不遵守sql\u alchemy\u pool\u size
。您能告诉我如何限制dag_处理器的数量吗?是的,现在我将其限制为max_threads=1
。我仍然不清楚为什么会以线程的名义创建进程,如果至少创建了所有进程,那么为什么不在所有进程之间共享相同的db连接池?