【发布时间】:2019-07-26 19:31:27
【问题描述】:
系统正在运行一个 Django 服务器 (1.11.5),其中 Celery (4.0.0) 和 RabbitMQ 作为代理。
有必要将一些任务发送到远程服务器以在那里进行处理。这个新服务器将安装自己的 RabbitMQ 以将其用作代理。问题出现在运行 Django 的服务器上,我们需要选择哪些任务继续在本地机器上运行,哪些任务被发送到新服务器。
由于某些架构原因,使用队列无法解决此问题,必须将任务发送到新代理。
是否可以在 Django 中创建两个不同的 Celery 应用程序(每个都指向不同的代理),每个应用程序都有自己的任务?怎么办?
【问题讨论】:
-
你真的需要两个 RabbitMQ 实例吗?您可以在不同的服务器上拥有 celery 工作者,它们都与同一个 RabbitMQ 实例通信,因此您可以放弃现有的实例并将所有内容发送到新的实例......
-
我们想避免这种解决方案,因为这意味着比预期更大的变化。在尝试了here 提出的解决方案(这也意味着很多改变)之后,我们决定改变我们组织 Celery 和 RabbitMQ 的方式,只使用一个具有不同队列的 RabbitMQ 实例。
标签: python django rabbitmq celery