Ich möchte ein Netzwerk-Pub / Sub-Event-System einrichten, muss aber auch Tasks asynchron ausführen können. Ich habe versucht, Sellerie zum schweren Heben zu bringen, aber ich habe das Gefühl, dass ich versuche, eine ganze Reihe von Dingen zu schlichten, nur um es zum Laufen zu bringen.
Ich habe zwei Maschinen (Input und Output) und beide haben Zugriff auf RabbitMQ. Ich möchte, dass ein Hauptprogramm eine Schleife startet, die auf Eingabe wartet (Bewegung, die von einer Webcam erkannt wird). Ich habe es eingerichtet, dass input_machine startet main.py, die eine Sellerie Aufgabe startet, die von einem Arbeiter auf der Input_Machine subbed zu "Eingabe" Warteschlange überwacht wird. Diese Aufgabe dauert nur eine Weile True-Schleife, bis einige Eingabe erkannt wird, die dann ruft eine andere benannte ('project.entered_room', die nichts tut) Sellerie Aufgabe auf die Warteschlange "Ausgabe".
Inzwischen habe ich auf der output_machine eine Sellerie-Instanz, die die "Ausgabe" -Warteschlange mit einer Aufgabe namens "project.entered_room" beobachtet, die auf jemanden reagiert, der den Raum betritt.
Wenn eine Eingabe auf input_machine erkannt wird, wird eine Aufgabe auf dem Ausgabegerät ausgeführt. Ich kann das zur Arbeit bringen, aber viele Importprobleme und andere Kopfschmerzen bekommen. Gibt es einen einfacheren Weg, dies zu erreichen? Ich mache alles falsch? Benutze ich die falschen Werkzeuge?
Ich habe eine Reihe verschiedener Frameworks untersucht, einschließlich Schaltungen und Twisted. Twisted ist sehr komplex und ich fühle mich, als würde ich mit einem Presslufthammer einen Nagel treffen.
Tags und Links python celery publish-subscribe