RabbitMQ ブローカーを使用して、さまざまな django アプリとして複数のタスクを実行しています。これは標準のdjango構成でセットアップされ、完全に機能していました。グループ、チェーンを使用し、異なるモジュールからそれらを呼び出していました。
標準的な慣行として、私は次のことを行いました。
セロリ.py:
app = Celery('<proj>')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
そして project/ 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 は正しいです。しかし、以前のタスク -> アプリ -> 設定 -> ブローカーの URL を確認すると、新しいブローカーで更新されます。これを修正する方法は?