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

Concurrency 芹菜:工人数量与并发性,concurrency,celery,web-worker,django-celery,celeryd,Concurrency,Celery,Web Worker,Django Celery,Celeryd,拥有以下各项之间的区别是什么: 一个并发性为4或4的工作进程 两个工作线程,每个并发2个 对于同一队列 谢谢你提出了一个有趣的问题 我能想到的事情(我相信还有很多): 对于高可用性: 您需要多台机器(如果一台机器停机),因此必须使用每台机器一个工人 即使对于一台机器,我认为在两个不同的进程中运行两个worker,而不是一个具有高并发性的worker更安全(如果我错了,请纠正我,但我认为它是通过线程实现的) 在我看来,他们建议每个CPU使用并发性 如果您想将不同的任务分配给不同的工作人员 当

拥有以下各项之间的区别是什么:

  • 一个并发性为4或4的工作进程
  • 两个工作线程,每个并发2个
  • 对于同一队列

    谢谢你提出了一个有趣的问题

    我能想到的事情(我相信还有很多):

    • 对于高可用性:
    • 您需要多台机器(如果一台机器停机),因此必须使用每台机器一个工人
    • 即使对于一台机器,我认为在两个不同的进程中运行两个worker,而不是一个具有高并发性的worker更安全(如果我错了,请纠正我,但我认为它是通过线程实现的)
    • 在我看来,他们建议每个CPU使用并发性
    • 如果您想将不同的任务分配给不同的工作人员
    当然,这是有代价的:更多的进程占用更多的资源(CPU/内存等)


    我发现这很相似。

    我假设您在同一台机器上运行两个worker。在这种情况下,我建议您为一个队列维护一个工作者

    • 同一队列的两名工作人员对您没有任何好处。这只会增加内存浪费
    • 当您有多个队列时,两个或多个工作线程,以保持优先级或为每个工作线程分配不同数量的内核
    • 如果您在不同的机器上运行工人,则单个队列的两个或多个工人非常有用。不同机器中的工作者使用同一队列中的任务,您可以根据每台机器中可用的内核分配并发性

    我意识到2年多后我做出了回应。但是我想我会把它放在这里,给那些仍然有类似疑问的人。

    谢谢你的回答