python - 在服务器中为两个 django 应用程序运行两个 celery worker

标签 python django redis celery

我有一个服务器,其中有两个 Django 应用程序正在运行 appone、apptwo 对他们来说,两个 celery worker 是用命令启动的:

celery worker -A appone -B --loglevel=INFO


celery worker -A apptwo -B --loglevel=INFO

两者都指向同一个 BROKER_URL = 'redis://localhost:6379'

redis 使用 db 0 和 1 设置

我可以在这两个应用程序的日志中看到在这两个应用程序中配置的任务,这会导致警告和错误。

我们能否在 django 设置中进行配置,使 celery 独占工作而不会干扰彼此的任务?

最佳答案

您可以 route tasks到不同的队列。使用两个不同的 -Q myqueueX 启动 Celery,然后在您的两个 Django 项目中使用不同的 CELERY_DEFAULT_QUEUE

根据您的 Celery 配置,您的 Django 设置应该类似于:

CELERY_DEFAULT_QUEUE = 'myqueue1'

您还可以通过以下方式进行更细粒度的控制:

@celery.task(queue="myqueue3")
def some_task(...):
  pass

这里有更多选项:

How to keep multiple independent celery queues?

关于python - 在服务器中为两个 django 应用程序运行两个 celery worker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45173826/

相关文章:

python - pip install py-find-1st 在 ubuntu20 和 centos 上使用 python3.9 失败

python - Django:并行运行几个任务

python - 导入 Django 模块时出现 VS Code 错误

django - 在 Django Channels 2 中向群组发送消息

node.js - connect-redis 不想连接到远程主机

python - 使用前缀分割大型 .gz 文件

python - 如何用python翻译字符串中的中间项?

Python 3 如果不是条件简化

Python 日志记录和日语(或任何非 ASCII)

performance - 在 Redis 中创建中型到大型列表/集合/zset/哈希的最有效方法是什么?