我有多个任务作为使用 RabbitMQ 代理的不同 django 应用程序。这是使用标准 django 配置设置的,并且运行良好。我正在使用组、链并从不同的模块调用它们。
作为标准做法,我有:
芹菜.py:
app = Celery('<proj>')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
在项目/初始化.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 时,它会更新为新的代理。如何解决这个问题?