【发布时间】:2012-08-31 05:57:44
【问题描述】:
如何使用两个不同的 celery 项目,它们使用来自单个 RabbitMQ 安装的消息。
一般来说,如果我为它们使用不同的 rabbitmq,这些脚本可以正常工作。但在生产机器上,我需要为他们共享相同的 RabbitMQ 后端。
注意:由于某些限制,我无法合并现有项目中的新项目,因此它将是两个不同的项目。
【问题讨论】:
如何使用两个不同的 celery 项目,它们使用来自单个 RabbitMQ 安装的消息。
一般来说,如果我为它们使用不同的 rabbitmq,这些脚本可以正常工作。但在生产机器上,我需要为他们共享相同的 RabbitMQ 后端。
注意:由于某些限制,我无法合并现有项目中的新项目,因此它将是两个不同的项目。
【问题讨论】:
RabbitMQ 能够创建称为 virtual 的虚拟消息代理 主机或虚拟主机。每一个本质上都是一个带有自己队列的 mini-RabbitMQ 服务器。这让您可以安全地将一个 RabbitMQ 服务器用于多个应用程序。
rabbitmqctl add_vhost 命令创建一个虚拟主机。
默认情况下,Celery 使用 / 默认虚拟主机:
celery worker --broker=amqp://guest@localhost//
但您可以使用任何自定义虚拟主机:
celery worker --broker=amqp://guest@localhost/myvhost
示例:
rabbitmqctl add_vhost new_host
rabbitmqctl add_vhost /another_host
celery worker --broker=amqp://guest@localhost/new_host
celery worker --broker=amqp://guest@localhost//another_host
【讨论】: