芹菜:工人数量与并发数量

时间:2017-10-03 10:29:38

标签: concurrency celery web-worker django-celery celeryd

拥有:

之间有什么区别
  1. 一个并发4或
  2. 的工作者
  3. 两个并发2的工人
  4. 为同一个队列。

    由于

2 个答案:

答案 0 :(得分:6)

交叉问题。

我能想到的事情(我确定还有更多):

  • 为了获得高可用性:
    1. 您需要多台计算机(如果一台计算机出现故障) - 因此您必须在每台计算机上使用工作程序。
    2. 即使对于一台机器 - 我认为让2个工作在两个不同的进程而不是一个具有高并发性的工作者更安全(如果我错了,请纠正我,但我认为它是用线程实现的)。
  • docs中,我看到他们建议使用每个CPU的并发。
  • 如果您想将不同的任务分开给不同的工作人员..

当然,你有这样的代价:需要更多资源(CPU /内存等)的更多进程。

我发现这个question非常相似。

答案 1 :(得分:5)

我假设您正在同一台计算机上同时运行两个工作程序。在这种情况下,我建议您维护一个工作人员排队。

  • 两个工作人员处于同一队列不会使您受益。这样只会增加内存浪费。
  • 当您有多个队列时,两个或更多工作线程,以保持优先级或为每个工作线程分配不同数量的核心。
  • 如果您在不同的计算机上运行工作程序,则
  • 对于单个队列,两个或更多工作程序很有用。不同计算机上的工作人员使用同一队列中的任务,您可以根据每台计算机上可用的核心分配并发性。

我知道2年后我做出了回应。但是我只是想把它放在这里,供那些仍然有类似疑问的人使用。