我试图使用django部署一个django项目,但我有以下问题没有解决:
- 我应该为每个web服务器运行一个celeryd吗
- 我应该只运行一台RabbitMQ服务器吗?在另一台运行celeryd的机器上(而不是),我的所有web服务器都可以访问它吗?或者RabbitMQ也必须在每个web服务器上运行
- 如果所有web服务器的代码都相同,我如何使用定期任务
谢谢你的回答。
这实际上取决于项目的规模,理想情况下,您有RabbitMq、芹菜工人和网络工人在不同的机器上运行。
您只需要一个RabbitMQ,最终需要多个队列工作者(当然,更大的队列需要更多的工作者)。
每个网络工作者不需要1个芹菜工作者,网络工作者将向broker发布任务,然后工作者将从那里获得任务,事实上,网络工作者并不关心连接到broker的工作者数量,因为它只与broker通信。
当然,如果你正在启动一个项目,那么把所有东西都放在同一个硬件上,保持低预算,等待流量和资金的流动是有意义的:)
你希望在你的应用程序的每个运行实例上都有相同的代码,无论它们是芹菜工人/网络服务器还是其他什么。