【问题标题】:Multi Celery projects with same RabbitMQ broker backend process具有相同 RabbitMQ 代理后端进程的多个 Celery 项目
【发布时间】:2012-08-31 05:57:44
【问题描述】:

如何使用两个不同的 celery 项目,它们使用来自单个 RabbitMQ 安装的消息。

一般来说,如果我为它们使用不同的 rabbitmq,这些脚本可以正常工作。但在生产机器上,我需要为他们共享相同的 RabbitMQ 后端。

注意:由于某些限制,我无法合并现有项目中的新项目,因此它将是两个不同的项目。

【问题讨论】:

    标签: python rabbitmq celery


    【解决方案1】:

    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

    【讨论】:

    • 效果很好。在实施此方法之前,我尝试使用不同的队列/交换配置,但没有奏效。使用不同的 VHOST,没有冲突,两个 Celery 应用程序对我来说都可以正常工作。
    猜你喜欢
    • 2023-03-04
    • 2021-06-19
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 2021-10-04
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多