【问题标题】:Celery configuration gets updated when calling a different task调用不同的任务时,Celery 配置会更新
【发布时间】:2016-07-30 16:25:26
【问题描述】:

我有多个任务作为使用 RabbitMQ 代理的不同 django 应用程序。这是使用标准 django 配置设置的,并且运行良好。我正在使用组、链并从不同的模块调用它们。

作为标准做法,我有:

celery.py:

app = Celery('<proj>')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

在项目/init.py:

from __future__ import absolute_import
from .celery import app as celery_app

所有任务都继承自 celery.Task 并覆盖了 run()。

现在我需要在不同的 RabbitMQ 代理上调用不同的任务。

所以这就是我必须调用不同任务的地方:

diff_app = Celery('diff')
diff_app.config_from_object({'BROKER_URL':'<DIFF_BROKER_URL>'})

现在打电话:

diff_app.send_task('<task_name>', (args1,arg2,))

完成此操作后,当我调用以前的任务时,它们会被路由到这个新代理。在我注释掉这段代码的那一刻,一切都恢复正常了。

当我检查 celery_app(如上所述)conf 时,代理 url 是正确的。但是当我检查任何以前的任务->应用程序->conf->代理 url 时,它会更新为新的代理。如何解决这个问题?

【问题讨论】:

    标签: celery django-celery celery-task djcelery celeryd


    【解决方案1】:

    我删除了“autodiscover_tasks”并将“_app”与每个“任务”类相关联。这让我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      相关资源
      最近更新 更多