使用主管限制 Celery 中的进程数

Limit number of processes in Celery with supervisor

我是 运行 AWS Elastic Beanstalk 中小实例中的 Celery。

但是,当我执行 top 时,我看到有 3 个 celery 进程 运行。我只想拥有。

我 运行 使用 supervisor 并且在我的配置文件中有(仅显示相关行):

[program:celeryd]
directory=/opt/python/current/app/src
command=/opt/python/run/venv/bin/celery worker -A ..."

user=celery
numprocs=1
killasgroup=true

我也遵循了建议 in this answer 并创建了一个包含以下内容的文件 /etc/default/celeryd

# Extra arguments to celeryd
CELERYD_OPTS="--concurrency=1"

重新启动 Celery 后(使用 supervisorctl -c config-file-path.conf restart celeryd),我再次看到了 3 个进程。有任何想法吗?谢谢!

您正在使用 celery 命令启动工作器。更改 /etc/default/celeryd 不会对 celery 命令产生任何影响。此外,celeryd 已被弃用。

当一个worker启动时,celery会启动一个默认进程和n(并发)个子进程。

您可以使用

启动工作器
[program:celery]
command=/opt/python/run/venv/bin/celery worker -c 1 -A foo"

这将启动一个并发为 1 的 worker,并且会有 2 个进程。