Celery: Aufgaben können unter Windows nicht ausgeführt werden

Erstellt am 8. Juni 2017  ·  13Kommentare  ·  Quelle: celery/celery

Sellerie 4.x startet (mit Fixes # 4078), aber alle Aufgaben stürzen ab

Schritte zum Reproduzieren

Verwenden Sie das Tutorial " Erste Schritte" (http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html).

Sellerie - Ein Arbeiter - Googlevel = Info
add.delay (2,2)

Erwartetes Verhalten

Die Aufgabe wird ausgeführt und ein Ergebnis von 4 wird erzeugt

Tatsächliches Verhalten

Sellerie stürzt ab.

"C: \ Programme \ Python36 \ Scripts \ celery.exe" - Eine perse.celery worker -l info

-------------- Sellerie @ PETRUS v4.0.2 (latentcall)


--- * * * - Windows-10-10.0.14393-SP0 2017-06-08 15:31:22


  • ** ---------- [config]
  • ** ----------.> app: perse: 0x24eecc088d0
  • * ----------.> transport: amqp: // guest : * @ localhost: 5672 //
  • ** ----------.> Ergebnisse: rpc: //
  • * --- * ---.> Parallelität: 12 (Prefork)- * ** ----.> Aufgabenereignisse: AUS (Aktivieren Sie -E, um Aufgaben in diesem Worker zu überwachen.)

-------------- [Warteschlangen]
.> Sellerie Austausch = Sellerie (direkt) Schlüssel = Sellerie

[Aufgaben]
. perse.tasks.celery_add

[2017-06-08 15: 31: 22,685: INFO / MainProcess] Verbunden mit amqp: // guest : *@127.0.0.1: 5672 //[2017-06-08 15: 31: 22,703: INFO / MainProcess] mischen: Suche nach Nachbarn[2017-06-08 15: 31: 23,202: INFO / SpawnPoolWorker-5] untergeordneter Prozess 5124, der self.run () aufruft[2017-06-08 15: 31: 23,207: INFO / SpawnPoolWorker-4] untergeordneter Prozess 10848, der self.run () aufruft[2017-06-08 15: 31: 23,208: INFO / SpawnPoolWorker-10] untergeordneter Prozess 5296, der self.run () aufruft[2017-06-08 15: 31: 23,214: INFO / SpawnPoolWorker-1] untergeordneter Prozess 5752, der self.run () aufruft[2017-06-08 15: 31: 23,218: INFO / SpawnPoolWorker-3] untergeordneter Prozess 11868, der self.run () aufruft[2017-06-08 15: 31: 23,226: INFO / SpawnPoolWorker-11] untergeordneter Prozess 9544, der self.run () aufruft[2017-06-08 15: 31: 23,227: INFO / SpawnPoolWorker-6] untergeordneter Prozess 16332, der self.run () aufruft[2017-06-08 15: 31: 23,229: INFO / SpawnPoolWorker-8] untergeordneter Prozess 3384, der self.run () aufruft[2017-06-08 15: 31: 23,234: INFO / SpawnPoolWorker-12] untergeordneter Prozess 8020, der self.run () aufruft[2017-06-08 15: 31: 23,241: INFO / SpawnPoolWorker-9] untergeordneter Prozess 15612, der self.run () aufruft[2017-06-08 15: 31: 23,243: INFO / SpawnPoolWorker-7] untergeordneter Prozess 9896, der self.run () aufruft[2017-06-08 15: 31: 23,245: INFO / SpawnPoolWorker-2] untergeordneter Prozess 260, der self.run () aufruft[2017-06-08 15: 31: 23,730: INFO / MainProcess] mischen: ganz alleine[2017-06-08 15: 31: 23,747: INFO / MainProcess] Sellerie @ PETRUS bereit.[2017-06-08 15: 31: 49,412: INFO / MainProcess] Empfangene Aufgabe: perse.tasks.celery_add [524d788e-e024-493d-9ed9-4b009315fea3][2017-06-08 15: 31: 49,416: ERROR / MainProcess] Task-Handler hat Fehler ausgelöst: ValueError ('nicht genügend Werte zum Entpacken (erwartete 3, 0)',)Traceback (letzter Anruf zuletzt):Datei "c: \ Programme \ python36 \ lib \ site-packages \ billiard \ pool.py", Zeile 359, im Workloopresult = (True, prepare_result (fun ( args, ** kwargs)))
Datei "c: \ Programme \ python36 \ lib \ site-packages \ celery \ app \ trace.py", Zeile 518, in _fast_trace_task
Aufgaben, akzeptieren, Hostname = _loc
ValueError: Nicht genügend Werte zum Entpacken (erwartete 3, 0)

Fix

Siehe Pull-Anfrage Nr. 4078

Documentation Windows Not a Bug

Hilfreichster Kommentar

Ich muss bestätigen: Dieser Fehler tritt auf

Celery 4.1.0
Windows 10 Enterprise 64 bit

beim Ausführen des Befehls celery -A <mymodule> worker -l info

und die folgende Problemumgehung funktioniert:

pip install eventlet
celery -A <mymodule> worker -l info -P eventlet

Alle 13 Kommentare

FWIW Ich habe dies mithilfe der Eventlet-Pool-Implementierung (Befehlszeilenoption "-P eventlet") umgangen.

Die Lösung von @drewdogg sollte im Tutorial erwähnt werden.

Ich muss bestätigen: Dieser Fehler tritt auf

Celery 4.1.0
Windows 10 Enterprise 64 bit

beim Ausführen des Befehls celery -A <mymodule> worker -l info

und die folgende Problemumgehung funktioniert:

pip install eventlet
celery -A <mymodule> worker -l info -P eventlet

Es reicht aus, FORKED_BY_MULTIPROCESSING = 1 Umgebungsvariable für die Worker-Instanz zu definieren.

@auvipy Arbeite für mich, danke.

@auvipy es löst wirklich das Problem :) 👍
hinzufügen:
os importieren
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
vor dem Definieren Sellerie Instanz ist genug

Vielleicht sollte dies in den Dokumenten erwähnt werden? @wonderfulsuccess Möchten Sie eine Pull-Anfrage senden?

@wonderfulsuccess

Vielen Dank

@auvipy es löst wirklich das Problem
hinzufügen:
os importieren
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
vor dem Definieren Sellerie Instanz ist genug

Danke, es hat funktioniert!

@auvipy Wenn dies nur eine Codezeile ist, die

Wo soll Sellerie das hinstellen? Ich glaube, dies ist gut für Windows-spezifische Anweisungen geeignet. Wenn Sie das Problem auf Codeebene beheben möchten, legen Sie eine entsprechende PR bei.

@auvipy es löst wirklich das Problem :) 👍
hinzufügen:
os importieren
os.environ.setdefault ('FORKED_BY_MULTIPROCESSING', '1')
vor dem Definieren Sellerie Instanz ist genug

Du bist großartig, vielen Dank!

@auvipy Ich habe nach einer Antwort auf dieses Problem gesucht. Ich habe viel Zeit damit verbracht, dieses Problem zu beheben. Vielen Dank

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen