在celeryd-multi的文档中,我们找到了这个例子:
# Advanced example starting 10 workers in the background:
# * Three of the workers processes the images and video queue
# * Two of the workers processes the data queue with loglevel DEBUG
# * the rest processes the default' queue.
$ celeryd-multi start 10 -l INFO -Q:1-3 images,video -Q:4,5 data
-Q default -L:4,5 DEBUG
(从这里:http://docs.celeryproject.org/en/latest/reference/celery.bin.celeryd_multi.html#examples)
为什么在单个主机上有多个工作进程处理同一个队列会有什么好处,如上例所示?这不是设置并发性的原因吗?
更具体地说,以下两行(A和B)之间是否存在实际差异?:
A:
$ celeryd-multi start 10 -c 2 -Q data
B:
$ celeryd-multi start 1 -c 20 -Q data
我担心由于我不理解这种实际差异,我错过了一些关于任务队列的宝贵知识,如果有人能够启发我,我将非常感激。
谢谢!
答案 0 :(得分:8)
为什么拥有更多的东西会有什么好处呢? 单个主机上的一个工作程序处理相同的队列,如在 上面的例子?
答案:
因此,您可能希望在同一台计算机上运行多个工作器实例 节点if:
您正在使用多处理池并希望并行使用消息。有些报告使用多个工作人员表现更好 实例而不是运行具有多个池的单个实例 工人。
您正在使用eventlet / gevent(由于臭名昭着的GIL,也包括' threads')池,并且您希望在多个CPU上执行任务 芯