Ich folge dem Tutorial von Celery Django und den Aufgaben, die ich sehe im Beispiel ( add, mul
) arbeite perfekt für mich. Ich bekomme die richtige Antwort, wenn ich res = add.delay(1,2); res.get()
mache.
Aber ich bekomme *** NotRegistered: u'pipeline.tasks.sayhello'
, wenn ich versuche, eine andere meine Aufgabe res = sayhello.delay('trex')
auszuführen.
Wenn ich res = sayhello('trex')
mache, kann ich das Ergebnis erhalten, indem ich einfach res
eintippe. Aber auf diese Weise führe ich die Funktion ornidarly, ohne Sellerie zu verwenden.
Die Aufgabe funktioniert nur, wenn ich in der Django Shell ./manage shell
Das Problem ist also, dass ich sayhello
task nicht von pipeline/views.py
ausführen kann. Aber ich kann die Aufgaben add
und mul
von dort ausführen.
Warum ist das? So führen Sie Aufgaben ordnungsgemäß aus views.py
?
Die vollständige Fehlermeldung:
%Vor%Django-Version
%Vor%Sellerie-Version:
%Vor%Django Projekt Verzeichnisbaum:
%Vor%etl / pipeline / views.py
%Vor%etl / pipeline / tasks.py
%Vor%Ich habe es auch versucht:
%Vor%etl / sellery.py
%Vor%etl / __ init__py
%Vor%etl / settings / base.py
%Vor%Der Fehler liegt daran, dass die Einstellung CELERY_IMPORTS in Ihrer Datei etl / settings / base.py nicht ordnungsgemäß funktioniert. Also mein Vorschlag ist:
Entfernen Sie das Komma von
%Vor%Wenn das Problem weiterhin besteht, führen Sie diesen Befehl aus:
%Vor%Noch eine Sache, Ihre tasks.py-Datei muss in einer Django-App sein (die in settings.py registriert ist), um importiert zu werden. Überprüfen Sie diesen Punkt auch. Danke.
Tags und Links python django celery django-celery