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'这正常吗?

是的,这正常。这些是调度程序进程。您可以使用气流.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连接池?