Celery多进程启动,可以启动1个或多个进程。

4
当我以以下方式运行3个worker的celery时:
celery -A tasks multi start default, high, low -Q:1 default -c:1 6 -Q:2 high -c:2 2 -Q:3 low -c:3 2 -l info -E --pidfile=/var/run/celery/%n.pid --logfile=/var/log/celery/%n.log 

ps aux | grep 'celery worker'

vagrant   2447 14.0  7.3 262216 36708 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n default,@server -A box_monitor -l info -Q default -c 6 --logfile=/var/log/celery/default,.log --pidfile=/var/run/celery/default,.pid
vagrant   2458 15.5  7.2 259656 36216 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n low,@server -A box_monitor -l info -Q low -c 1 --logfile=/var/log/celery/low,.log --pidfile=/var/run/celery/low,.pid
vagrant   2468  0.0  6.4 261192 32380 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n default,@server -A box_monitor -l info -Q default -c 6 --logfile=/var/log/celery/default,.log --pidfile=/var/run/celery/default,.pid
vagrant   2469  0.0  6.4 261192 32372 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n default,@server -A box_monitor -l info -Q default -c 6 --logfile=/var/log/celery/default,.log --pidfile=/var/run/celery/default,.pid
vagrant   2470  0.0  6.4 261192 32372 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n default,@server -A box_monitor -l info -Q default -c 6 --logfile=/var/log/celery/default,.log --pidfile=/var/run/celery/default,.pid
vagrant   2471  0.0  6.4 261192 32372 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n default,@server -A box_monitor -l info -Q default -c 6 --logfile=/var/log/celery/default,.log --pidfile=/var/run/celery/default,.pid
vagrant   2472  0.0  6.4 261192 32376 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n default,@server -A box_monitor -l info -Q default -c 6 --logfile=/var/log/celery/default,.log --pidfile=/var/run/celery/default,.pid
vagrant   2473  0.0  6.4 261192 32376 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n default,@server -A box_monitor -l info -Q default -c 6 --logfile=/var/log/celery/default,.log --pidfile=/var/run/celery/default,.pid
vagrant   2475 13.0  7.2 259656 36236 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n high@server -A box_monitor -l info -Q high -c 1 --logfile=/var/log/celery/high.log --pidfile=/var/run/celery/high.pid
vagrant   2480  0.0  6.3 258588 31920 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n low,@server -A box_monitor -l info -Q low -c 1 --logfile=/var/log/celery/low,.log --pidfile=/var/run/celery/low,.pid
vagrant   2481  0.0  6.4 258976 32304 ?        S    05:20   0:00 /usr/local/bin/python2.7 -m celery worker -E -n high@server -A box_monitor -l info -Q high -c 1 --logfile=/var/log/celery/high.log --pidfile=/var/run/celery/high.pid

预期进程数量为10,但实际上是11。这是为什么呢?

1个回答

8
第一个进程(2447)是启动其他10个进程并控制它们的进程。它本身不会执行任何实际工作,而其他10个进程则是执行实际处理的工作者。

谢谢你的回答。但是你怎么知道呢?有时它会创建3个以上的进程。 - KevinOelen
2
我可以看出来,因为这通常是实现“多工作进程”系统的方式。您有一个主控制进程,它会生成X个工作进程。为什么要创建3个额外的进程,我不知道。 - ojii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接