Ich habe mehrere Aufgaben als verschiedene Django-Apps mit einem RabbitMQ-Broker. Dies wurde mit Standard-Django-Konfiguration eingerichtet und funktionierte perfekt. Ich benutzte Gruppen, Ketten und rief sie aus verschiedenen Modulen an.Sellerie-Konfiguration wird aktualisiert, wenn eine andere Aufgabe aufgerufen wird
Als gängige Praxis, ich hatte:
celery.py:
app = Celery('<proj>')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
Und in Projekt/init Py:
from __future__ import absolute_import
from .celery import app as celery_app
Alle Aufgaben aus Sellerie geerbt wurden .Task mit run() überschrieben.
Jetzt habe ich eine Anforderung, eine andere Aufgabe auf einem anderen RabbitMQ-Broker aufzurufen.
Also hier ist, was ich tat, wo ich die andere Aufgabe zu nennen hatte:
diff_app = Celery('diff')
diff_app.config_from_object({'BROKER_URL':'<DIFF_BROKER_URL>'})
Jetzt anrufen:
diff_app.send_task('<task_name>', (args1,arg2,))
Nachdem ich dies zu tun, wenn ich meine bisherigen Aufgaben nennen, sie bekommen an diesen neuen Broker weitergeleitet. Sobald ich diesen Code kommentiere, ist alles wieder in Ordnung.
Wenn ich sellery_app (oben beschrieben) conf überprüfen, ist die Broker-URL korrekt. Aber wenn ich eine vorherige Aufgabe-> app-> conf-> Broker-URL überprüfe, wird sie mit einem neuen Broker aktualisiert. Wie behebe ich das?