Sellerie. Framework für die Verarbeitung von Python-Jobwarteschlangen. Lassen Sie den Worker-Daemon warten und erstellen Sie einen Mechanismus für die asynchrone Verarbeitung, oder starten Sie den Beat-Daemon, um einen geplanten Stapelprozess zu erstellen. Die Dokumentation ist gut gepflegt.
In Bezug auf den Verarbeitungsablauf ist es naheliegend zu glauben, dass ein Taskplaner an einen Verarbeitungsteil wie AWS Lambda oder IBM Bluemix OpenWhisk angehängt ist. Ich bin dankbar, dass ich mit der Verarbeitungsteilung fortfahren kann, ohne mir Gedanken über die API-Definition machen zu müssen.
Wenn Sie einen asynchronen Job verwenden möchten, starten Sie den Worker-Daemon.
Ich starte den Daemon mit "Sellerie - Ein Projektarbeiter", aber es ist schwer zu verstehen, wie man "Projekt" spezifiziert!
Die groben Regeln sind so.
modname: varname
muss eine Sellerie-Instanz sein, wenn die proj
-Zeichenfolge ein:
enthältproj.app
kein Modul ist, muss es eine Sellerie-Instanz sein (hey)proj.celery
kein Modul ist, muss es eine Sellerie-Instanz sein (hmm)proj.celery
ein Modul istproj.celery.app
kein Modul ist, muss es eine Sellerie-Instanz sein (hey)proj.celery.celery
kein Modul ist, muss es eine Sellerie-Instanz sein (hmm)proj.celery
auf eine Unterklasseninstanz von Celeryproj
nach Unterklasseninstanzen von SellerieMit anderen Worten, um ein Beispiel zu geben ...
somename.py
im aktuellen Verzeichnis
Wenn die Sellerie-Instanzvariable x vorhanden istSellerie-A Somename Worker
beginnen.Sellerie - Ein Somename Worker: x
. OderSellerie-A Somename Worker
beginnen.Sellerie -A somename.celery: x Arbeiter
. OderSellerie - Ein somename.celery Arbeiter
. Oderfrom __future__ import absolute_import
(Python 2)somename / subname.py
vorhanden istSellerie -A somename.subname: x worker
. OderSellerie-A somename.subname worker
.Sellerie - Ein Somename: App Worker
.Sellerie -A somename.celery: x Arbeiter
Sellerie - Ein somename.celery Arbeiter
.from __future__ import absolute_import
(Python 2)Wenn Sie genau hinschauen, ändert sich das Erscheinungsbild der App je nach Muster geringfügig.
celery -A somename worker
...
- ** ---------- [config]
- ** ---------- .> app: __main__:0x106a950
celery -A somename worker
...
- ** ---------- [config]
- ** ---------- .> app: somename:0x1585410
Die verwirrende Ursache sind die Sonderregeln "proj.app" und "proj.celery".
Extrem verwirrende Fälle werden in Flask Documentation nicht erläutert. Flask erstellt im Allgemeinen eine "app" -Variable, die eine Flask-Instanz ist. Sellerie ist jedoch auch der Ansicht, dass es sich um eine Sellerie-Instanz handeln muss, wenn die Variable "app" gefunden wird, sodass eine Diskrepanz besteht.
Eine Problemumgehung wäre zum Beispiel:
:
Sellerie-A Ihre_Anwendung: Sellerie-Arbeiter
anWenn Sie einen geplanten Stapel erstellen möchten, starten Sie einen Beat-Daemon.
celery -A somename beat
Starten Sie es separat vom Worker-Daemon. Dies ist im Grunde nicht skaliert, daher müssen Sie bei der Verwendung vorsichtig sein.
Beachten Sie auch, dass Zeitplaneinstellungen nicht in das Programm eingebettet werden können und in der Grundeinstellungsdatei aufgeführt werden.
Ich verstehe die Beziehung zwischen Jobwarteschlange und Sellerie nicht wirklich ... Ist das das Bild ...?
Nachtrag: Jetzt haben Sie die Möglichkeit, kafka + faust zu verwenden.