2014-09-11 14 views
5
  1. Ich weiß nicht, ob es a bug oder ein Konfigurationsproblem ist.
  2. Ziel: debug/ändern Sellerie Aufgaben ohne manuell neu zu starten Arbeiter jedes Mal, wenn ich eine kleine Änderung

So habe ich konfiguriert Sellerie + RabbitMQ machen. Funktioniert alles.Sellerie funktioniert nicht mit RabbitMQ mit "--autoreload" -Option

Added --autoreload Option zum celery -A proj worker --loglevel=debug Befehl und Protokollierung stoppt dazu:

[2014-09-11 19:22:00,447: DEBUG/MainProcess] | Worker: Hub.register Autoreloader... 

Ohne sie:

[2014-09-11 19:37:34,316: DEBUG/MainProcess] | Worker: Hub.register Pool... 
[2014-09-11 19:37:34,317: DEBUG/MainProcess] basic.qos: prefetch_count->16 
[2014-09-11 19:37:36,275: DEBUG/MainProcess] pidbox received method enable_events() [reply_to:None ticket:None] 
[2014-09-11 19:37:36,275: INFO/MainProcess] Events of group {task} enabled by remote. 

Alles andere funktioniert gut. RabbitMQ erhält eine Nachricht nach

celery call tasks.update 

Es gibt Verbindungen von Sellerie. Es sagt Sellerie nicht, eine Aufgabe zu beginnen.

Es sieht aus wie ein Verbindungsproblem, aber ich weiß nicht, was es ist.
Wenn Sie damit helfen können, schreiben Sie bitte.

Antwort

1

Es ist ein Fehler in Sellerie bei Sellerie/Arbeiter/autoreload.py Linie 67

Dieser Bug-Fix hat Meister verpflichtet worden: https://github.com/pashinin/celery/commit/92b52db6eeeb75494700ffe807ecd4c1fe6b0643

können Sie die Bibliothek Patch für Zeile 67 von Autonachlademode ändern. py von

for chunk in iter(lambda: f.read(2 ** 20), ''): 

zu

for chunk in iter(lambda: f.read(2 ** 20), b''): 

Af Nach dieser Änderung können Sie sich noch einem weiteren Problem gegenübersehen: Wenn Sie bereits eine Aufgabe erstellt haben, wird diese nicht erneut erstellt und diese Aufgabe wird nach dem Neuladen des Moduls nicht aktualisiert. Neu geladene Aufgaben werden erst aktiv, nachdem Sie sie erneut ausgeführt haben.

Sellerie Entwickler scheinen nicht bereit sein, dieses Problem frühzeitig zu beheben. Bis dahin haben Sie zwei Möglichkeiten:

  1. Die aktualisierte Aufgabe muss ausgeführt werden, bevor eine neue abgeholt wird.

  2. den Sellerie Arbeiter neu starten, nachdem eine Aufgabe

aktualisiert
Verwandte Themen