在芹菜中,让多个工人处理同一个队列的目的是什么?



在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

相关内容

  • 没有找到相关文章

最新更新