Frage Mehrere Arbeiter mit Sellerie laufen


Ich muss von Rabbitmq lesen und Aufgabe parallel mit Sellerie in einem einzigen System ausführen.

[2014-12-30 15:54:22,374: INFO/Worker-1] ...   
[2014-12-30 15:54:23,401: INFO/Worker-1] ...
[2014-12-30 15:54:30,878: INFO/Worker-1] ...
[2014-12-30 15:54:32,209: INFO/Worker-1] ...
[2014-12-30 15:54:33,255: INFO/Worker-1] ...
[2014-12-30 15:54:48,445: INFO/Worker-1] ...
[2014-12-30 15:54:49,811: INFO/Worker-1] ...
[2014-12-30 15:54:50,903: INFO/Worker-1] ...
[2014-12-30 15:55:39,674: INFO/Worker-1] ...
[2014-12-30 15:55:41,024: INFO/Worker-1] ...
[2014-12-30 15:55:42,147: INFO/Worker-1] ...

Es scheint nur 1 Arbeiter läuft die ganze Zeit .. dh nacheinander in der Reihenfolge. Wie kann ich Sellery so konfigurieren, dass mehrere Mitarbeiter parallel ausgeführt werden?


5
2017-12-30 11:41


Ursprung




Antworten:


Ich habe jetzt meine Antwort aktualisiert nach dem Kommentar von MartinP in Bezug auf Worker laichen Child Prozesse nicht Threads:

Sellerie Arbeiter und Arbeiter Prozesse sind verschiedene Dinge. Wenn ein Worker gestartet wird, erzeugt er eine bestimmte Anzahl von Child-Prozessen. Die Standardanzahl dieser Prozesse entspricht einer Anzahl von Kernen auf diesem Computer. Unter Linux können Sie die Anzahl der Kerne überprüfen über:

$ nproc --all

Andernfalls können Sie es selbst angeben, z. B .:

$ celery -A proj worker --loglevel=INFO --concurrency=2

Im obigen Beispiel gibt es einen Worker, der zwei untergeordnete Prozesse erzeugen kann. Normalerweise wird empfohlen, einen einzelnen Worker pro Maschine auszuführen, und der Parallelitätswert definiert, wie viele Prozesse parallel ausgeführt werden. Wenn jedoch mehrere Worker ausgeführt werden müssen, können Sie sie wie folgt starten:

$ celery -A proj worker -l info --concurrency=4 -n wkr1@hostname
$ celery -A proj worker -l info --concurrency=2 -n wkr2@hostname
$ celery -A proj worker -l info --concurrency=2 -n wkr3@hostname

Siehe Sellerie Dokumente Für mehr Information


9
2018-02-08 22:03



Sehr hilfreiche Unterscheidung. Danke - Kostas Demiris
Der Parameter 'courcency' führt keine Threads aus. Es führt standardmäßig untergeordnete Prozesse aus, damit Tasks parallel verarbeitet werden. docs.selleryproject.org/de/latest/reference/... - MartinP


Ich habe das gefunden

http://docs.celeryproject.org/en/latest/reference/sellery.html?highlight=parallel

Sie können suchen Leinwandprimitive Dort können Sie sehen, wie Gruppen für die parallele Ausführung erstellt werden.

Klasse sellery.group (task1 [, task2 [, task3 [, ... taskN]]]) Erzeugt eine Gruppe   von Aufgaben, die parallel ausgeführt werden sollen.

Ansonsten ist es ein guter Weg, zum IRC-Kanal zu gehen und spezielle Fragen zu stellen. Normalerweise gibt es Leute, die das sehr gut wissen und ihnen helfen können.


0
2017-12-30 12:38





Es sieht so aus, als ob Ihr Mitarbeiter nur einen einzelnen Prozess / Thread ausführt. Sie müssen wahrscheinlich nur hinzufügen --concurrency oder -c Streit wenn der Worker gestartet wird, um mehrere (parallele) Worker-Instanzen zu spawnen.

celery -A proj worker -c 4

0
2018-01-04 21:52