在多服务器生产环境中使用django-celery

5
我想使用Django部署Django项目,但是我有以下问题尚未解决:
  • 每个web服务器是否应该运行一个celeryd?
  • 我应该在另一台机器上(不)运行celeryd,并使RabbitMQ可供所有我的web服务器访问,或者RabbitMQ也必须在每个web服务器上运行?
  • 如果在所有web服务器中代码相同,如何使用周期性任务?
感谢您的回答。
1个回答

6
这主要取决于项目的规模,理想情况下,RabbitMq、celery workers和web workers应该在不同的机器上运行。
你只需要一个RabbitMQ,可能需要多个队列worker(当然,更大的队列需要更多的worker)。
你不需要为每个web worker设置1个celery worker,web worker将向代理发布任务,然后工作者将从代理那里获取它们。实际上,web worker并不关心连接到代理的worker数量,因为它只与代理通信。
当然,如果您正在启动一个项目,将所有东西放在同一台硬件上,并保持预算低廉,等待流量和资金流动是有意义的:)
你希望在应用程序的每个运行实例上都拥有相同的代码,无论它们是celery workers、webservers还是其他任何东西。

我应该怎么做才能让每个工人读取相同的队列?我花了很多时间搜索示例,但没有找到。谢谢。 - user2372074

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接