Ausführen von Sellerie mit RabbitMQ

Das Interesse an verteilter Verarbeitung ist explosionsartig gestiegen.längere Ausführung von Aufgaben über viele verschiedene Mitarbeiter hinweg. Message Brokerwie RabbitMQ bieten Kommunikation zwischen Knoten. Wenn Sie Ihre Celeryclients, Workers und zugehörigen Services in der Cloud ausführen, kann Ihr Team Backend-Prozesse, Jobs und grundlegende Verwaltungsaufgaben einfach verwalten und skalieren.

Was ist Sellerie?

Celeryist eine verteilte Jobwarteschlange, die die Verwaltung der Aufgabenverteilung vereinfacht.Entwickler teilen Datensätze in kleinere Stapel auf, damit Sellerie sie in einer Art Arbeit verarbeiten kann, die als Job bezeichnet wird.

Sie stellen einen oder mehrere Arbeitsprozesse bereit, die eine Verbindung zu einer Nachrichtenwarteschlange herstellen (anAMQP- oder SQS-basierter Broker). Clients senden Jobs an den Nachrichtenbroker, und die Warteschlange wartet mitcelery auf Jobanforderungen. Der Nachrichtenbroker verteilt dann Jobanforderungen an die Mitarbeiter.Arbeiter warten auf Jobs von Sellerie und führen die Aufgaben aus.Wenn Sie fertig sind, sendet der Worker ein Ergebnis an eine andere Warteschlange, damit der Client verarbeiten kann.

In Sellerie kommunizieren Clients und Worker nicht direkt miteinander, sondern über Nachrichtenwarteschlangen.Clients senden Nachrichten mithilfe von Aufgaben im System, so wie ein Remote-Procedurecall eine Funktion initiiert. Clients müssen das tatsächliche Format nicht verstehen, sondern Funktionen kommentieren und beim Framework registrieren:

@app.task def send_hello(x, y): return ‘Hello’ # overrides the broker from your configuration app = Celery('app_name', broker='...') app.tasks 

Mit der offiziellen Python-Bindung haben wir eine Aufgabe erstellt und bei registriertdas System. Sie können dieapply_async(function, args, kwargs,...) -Methode verwendenum die Aufgabe an die entsprechende Warteschlange zu senden. Der Client ruftgetfür die vonapply_asynczurückgegebene Zukunft auf, um die Antwort zu blockieren und abzurufen, oder verwendet die State-Methode, um einen Aufruf an den Broker zu initiieren, der den Status der Anforderung überprüft.

Eine Nachricht, die an eine Warteschlange weitergeleitet wird, wartet in der Warteschlange, bis jemand sie verbraucht, und die Nachricht wird aus der Warteschlange gelöscht, wenn sie bestätigt wurde.

Ergebnisse in Sellerie

Es ist möglich, den Status einer Aufgabe zu verfolgen. Sie können die Staaten auch senden oder senden. Anstatt die get-Funktion zu verwenden, ist es möglichergebnisse an ein anderes Backend senden. Es gibt mehrere integrierte Resultbackends zur Auswahl, darunter QLALCHEMY, specificdatabasesandRPC (RabbitMQ).

Standardmäßig ist Sellerie so konfiguriert, dass es keine Aufgabenergebnisse verbraucht. Durch Festlegen der Konfigurationsoptionresult_backend = 'rpc'wird das System angewiesen, eine Antwort zur Verwendung an eine eindeutige Warteschlange zu senden. Es wird nicht empfohlen, das ampq-Backend zu verwenden. Dies kann zu einem Speicherverlust führen.

Weitere Informationen zu den Ergebnissen finden Sie hier.

Was sind Börsen in Sellerie?

Sellerie arbeitet durch diemessage-Routerund diepublish-Subscribe-Muster.Publisher pushen Nachrichten an eine Exchange, die entweder Direct oder Wildcard Matching verwendet, um sie an eine oder mehrere Arbeitswarteschlangen im Broker zu senden. Der Austauschtyp definiert, wieDie Nachrichten werden durch den Austausch geleitet.Sie konfigurieren Exchange-Typen in der Konfiguration:

CELERY_QUEUES = { "my_queue”:{ "exchange”: "my_exchange”, "exchange_type”: "topic”, "binding_key”: "all_tasks.task_type” } } CELERY_DEFUALT_EXCHANGE=”my_exchange” CELERY_DEFAULT_EXCHANGE_TYPE=”direct” CELERY_DEFAULT_ROUTING_KEY=”all_tasks”

In diesem Beispiel deklarieren Sie eine Standardwarteschlange als die einzige bekannte Warteschlange mit dem Standardaustausch, überschreiben jedoch den Typ mit dem Routing keyall_tasks .Aufgabentyp. Der Themenaustausch ermöglicht es Ihnen, Platzhalter zu verwendenso dass Aufgaben an all_tasks gesendet werden.* werden noch empfangen. Diese Konfiguration kann im selben Modul erfolgen, in dem Sie Ihre Anwendung starten.

Arten von Börsen

Die Standard-Austauschtypen sind Direct, topic, Fanout und headers. Diese legen fest, wie Nachrichten an Abonnenten weitergeleitet werden. Routing-Schlüssel müssen genau übereinstimmenein direkter Austausch. Fanout-Exchanges senden Nachrichten an alle angehängten Warteschlangen.Themen ermöglichen den Abgleich von Platzhaltern. Header-Austausch übergeben nur Metadaten.

Erfahren Sie mehr über den Austausch von RabbitMQ und Routing-Schlüsseln

Wann sollte ich Sellerie verwenden?

Als Task-Queuing-System funktioniert Sellerie gut mit lang laufenden Prozessen oder kleinen wiederholbaren Aufgaben, die an Stapeln arbeiten.Die Arten von Problemen, die Sellerie behandelt, sind häufige asynchrone Aufgaben. Bildskalierung, Videokodierung, ETL, E-Mail-Versand oder andere Pipelines profitieren von diesem vorgefertigten Framework, das einen Großteil der mit der Konstruktion verbundenen Arbeit erledigt.

Was sind die Vorteile von Sellerie?

Sellerie arbeitet mit jeder Sprache über das standardisierte Nachrichtenprotokoll.Neben der offiziellen Python-Version sind weitere APIs in Entwicklung für e.g.Java ,RustandNode.Es ist möglich, ein zentralisiertes System mit einer beliebigen Sprache mit anAMQP- oder SQS-API zu erstellen.

Weitere Vorteile sind die Minimierung der Menge an Code, der für die Verteilung von Aufgaben erforderlich ist, und die Möglichkeit, Jobs regelmäßig über zu planencelerybeat.Celerybeat ist ein Scheduler, der Aufgaben in regelmäßigen Abständen startet.Eine eigenständige Echtzeitüberwachung für Sellerie-Mitarbeiter ist ebenfalls über verfügbarcelerymon.

Warum sollte ich einen Cloud Message Broker verwenden?

Als vorgefertigter Zwischenhändler vereinfacht Sellerie die Pipeline-Entwicklung und -Verwaltung.CloudAMQP beseitigt die administrativen Anforderungen Ihres Backends mit ready-madeclusters.

„Wir verwenden CloudAMQP – RabbitMQ als Broker für unsere asynchronen Aufgaben über Chery. Wir verwenden es als ereignisbasierten asynchronen Dienst. CloudAMQP supportsour Projekt durch ordnungsgemäße Überwachung und hohe Verfügbarkeit und scalablebroker Warteschlangen.“ Shivam Arora, Delhivery

Sie müssen sich keine Gedanken mehr über die Skalierung Ihres Systems machen, um der wachsenden Nachfrage gerecht zu werden.Unsere Instanzen werden mit der bereits ausgeführten Verwaltungskonsole geliefert.

Einrichten von RabbitMQ mit CloudAMQP

CloudAMQP stellt Ihre RabbitMQ-Instanzen fast sofort bereit.Erstellen Sie ein Konto und stellen Sie eine Instanz direkt über die Webverwaltungsoberfläche bereit. Dank der integrierten automatischen Skalierung können Ihre Broker schnell arbeiten.CloudAMQP basiert die Kosten vollständig auf der Leistung der zugrunde liegenden provisionedinstance, und Sie können bei Bedarf zwischen verschiedenen Plänen hoch- und runterskalieren. Unsere kostenlose Stufe, Little Lemur,ist eine hervorragende Option zum Testen.

Wie verwende ich CloudAMQP als meinen Sellerie-Nachrichtenbroker?

Nach der Bereitstellung funktioniert Ihr CloudAMQP-Broker auf die gleiche Weise wie Ihr lokales System. Sie benötigen lediglich eine URL, einen Benutzernamen und ein Kennwort, um eine Verbindung zum Broker herzustellen. Sellerie erledigt den Rest:

app = Celery('app_name', broker='amqps://user:password@host:port/host’)print(app.conf.broker_url)

Das Sellerie-Framework speichert die URL in der Konfiguration. Da Sellerie getrennt vom Broker ausgeführt wird, erhalten Sie den gleichen Grad an Kontrolle, als ob Sie Ihr gesamtes System lokal ausführen würden.

Kann ich meine Sellerie-Worker in der Cloud betreiben?

Während CloudAMQP einen Message Broker bereitstellt, ist es auch möglich, Delery Worker auf AWS oder einem anderen Cloud-Service zu deployen. Arbeiter müssen nur wissen, wo sich der Broker befindet, um Teil des Systems zu werden. Sellerie verwaltet Aqueue für Ereignisse und Benachrichtigungen ohne einen gemeinsamen Registrierungsknoten.

Durch die Verwendung eines Brokers für die Systemverwaltung können Sie Ihre Aufgaben inDocker-Container overKubernetes ausführen.Container werden automatisch an Ihre Anforderungen angepasst, während Sie mit Kubernetes Skalierungsrichtlinien definieren können und Flower Überwachungsfunktionen bietet.Einen offiziellen Sellerie-Container finden Sie hier:https://hub.docker.com/_/celery.Celery wird auch auf Heroku vollständig unterstützt.

Wenn Sie Ihre Sellerie-Clients und -Worker in der Cloud ausführen, werden die Kosten für die Entwicklung und Bereitstellung von Pipelines minimiert.

Warum CloudAMQP das Sellerie-Projekt sponsert

Wir haben viele Kunden, die Anwendungen ausführen, die Sellerie vertrauen, und wir unterstützen daher aktiv und monatlich die Entwicklung des Celery (AMQP) -Projekts. Bitte lassen Sie uns wissen, wenn es etwas in der Sellerie gibt, auf das wir uns besonders konzentrieren sollen.

Besuchen Sie unsere Plan-Seite, um weitere Informationen zu den ersten Schritten bei der Bereitstellung eines RabbitMQ-Clusters zu erhalten.Wir empfehlen Ihnen außerdem, unsere empfohlenen Einstellungen für Sellerie auf CloudAMQP zu lesen, bevor Sie eine Produktionspipeline starten, und sich ein Bild von derCelery Framework.

Gefällt Ihnen dieser Artikel? Vergiss nicht, es mit anderen zu teilen. Inhalt

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.