5

I trying to deploy a django project using django, but I have these questions unsolved:

  • Should I run one celeryd for each web server?
  • Should I run just one RabbitMQ server, on another machine (not) running celeryd there, accesible to all my web servers? or RabbitMQ must be run also on each of the web servers?
  • How can I use periodic tasks if the code is the same in all web servers?

Thank for your answers.

4

1 回答 1

6

这真的取决于项目的大小,理想情况下你有 RabbitMq、celery workers 和 web workers 运行在不同的机器上。

您只需要一个 RabbitMQ 并最终需要多个队列工作人员(当然,更大的队列需要更多工作人员)。

您不需要每个网络工作者 1 个 celery 工作者,网络工作者将向代理发布任务,然后工作者将从那里获取它们,事实上,网络工作者并不关心连接到代理的工作者数量,因为它只与经纪人。

当然,如果您正在开始一个项目,那么将所有内容都保留在相同的硬件上并保持低预算并等待流量和资金流动是有意义的 :)

您希望在应用程序的每个运行实例上都有相同的代码,无论它们是芹菜工人/网络服务器还是其他任何东西。

于 2012-09-03T10:40:43.510 回答