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

时间:2017-03-23 14:43:29

标签: celery elastic-beanstalk supervisord

我正在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个进程。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您正在使用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个进程。