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