Einige Sellerie-Aufgaben funktionieren, andere sind nicht registriert

8

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

ausführe %Vor%

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 ?

aus

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%     
trex 11.11.2016, 11:22
quelle

1 Antwort

5

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.

    
Prakhar Trivedi 11.11.2016 12:48
quelle