【问题标题】:Running two celery workers in a server for two django application在服务器中为两个 django 应用程序运行两个 celery worker
【发布时间】:2017-12-23 17:42:00
【问题描述】:

我有一个服务器,其中两个 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 可以单独工作而不干扰彼此的任务吗?

【问题讨论】:

    标签: python django redis celery


    【解决方案1】:

    您可以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?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-30
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      • 2023-03-24
      • 2017-02-21
      • 2020-01-20
      • 2010-10-20
      相关资源
      最近更新 更多