在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
(From here: http://docs.celeryproject.org/en/latest/reference/celery.bin.celeryd_multi.html#examples)
在上面的例子中,为什么在一个主机进程上有一个以上的工作进程是好的?这不是设置并发的目的吗?
更具体地说,下面两行(A和B)之间有什么实际的区别吗?:
:
$ celeryd-multi start 10 -c 2 -Q data
B:
$ celeryd-multi start 1 -c 20 -Q data
我担心由于我不理解这种实际差异,我错过了一些关于任务队列的有价值的知识,如果有人能给我启发,我将非常感激。
谢谢!
什么是一个实际的例子,为什么有更多是好的同一主机上的多个工作进程处理同一队列,如以上例子吗?
答:
因此,您可能希望在同一台机器上运行多个worker实例节点如果:
您正在使用多处理池,并希望并行地使用消息。有些报告使用多个worker的性能更好实例,而不是运行具有多个池的单个实例工人。
你正在使用eventlet/gevent(由于臭名昭著的GIL,也是'threads')池),并且你想在多个CPU上执行任务核心。
参考:http://www.quora.com/Celery-distributed-task-queue/What-is-the-difference-between-workers-and-processes