运行 同一虚拟机不同虚拟环境中生产中的多个芹菜实例

Running multiple celery instances in Production in same VM different virtual-envs

已经有类似的问题了。我一直在使用 Django Celery RabbitMQ 运行 连接多个生产应用程序,到目前为止一切顺利。但是现在有一个客户,我们需要在其虚拟机上 运行 三个独立的 Django 应用程序,并且每个应用程序都有一个 Celery 应用程序。

虽然 运行将 Celery 作为独立的,但我已经遵循了这些文档。他们就像一个魅力。我说的是 /etc/init.d/celeryd 选项。

问题是 init.d 脚本指向脚本 /etc/default 并且只有一个选项可以添加目录和其他设置以指向正确的 Django 应用程序。

https://docs.celeryproject.org/en/latest/userguide/daemonizing.html#example-configuration

但是我还没有看到任何文档,如果在同一个 VM 中,我需要更改哪些配置,对于同一个 Rabbit-MQ 服务器,我们需要进行更改。

简而言之,我如何在一台机器上 运行 使用 celery 和 Rabbit MQ 的多个 Django 应用程序。应用使用不同的 python VM

一个解决方案是为每个 Django 应用程序提供一个 Celery systemd 服务脚本。这意味着您将在 /usr/lib/systemd/system/ 中拥有 appA-celery.service,以及 appB-celery.service 和 appC-celery.service。旧的 /etc/init.d (SysV) 处理服务的方式与此类似。

另一种解决方案是 运行 单个工作人员订阅 N 个不同的队列(针对每个应用程序),然后配置您的应用程序以将任务发送到它们的专用队列。