Sellerie und Rabbitmq in Django und Überwachung mit Flower, nur ein paar Schritte, um Async zum Laufen zu bringen

In meinen 6 Jahren Programmiererfahrung ist Django ohne Zweifel das beste Framework, mit dem ich je gearbeitet habe. Manchmal werden wir eine einfache Django-Anwendung erstellen, um asynchrone Aufgaben im Hintergrund mit Sellerie und RabbitMQ auszuführen.

Python 3.6.8, RabbitMQ 3.6.10

Django==2.2.3, flower==0.9.3, Sellerie==4.3.0

Installieren Sie RabbitMQ :

apt-get install rabbitmq-server

Der RabbitMQ-Dienst wird bei der Installation automatisch gestartet. Sie können den Server manuell starten, indem Sie den folgenden Befehl in der Befehlszeile ausführen.

rabbitmq-server

Nach RabbitMQ Installation, Sie müssen Python und zugehöriges Paket mit pip-Befehl installieren wie:

pip install Django
pip install celery

Dann, Sie müssen ein Django-Projekt mit einer einfachen App erstellen, wir schaffen djangocelery Projekt mit App l, Sie können das djangocelery Projekt auf meinem GitHub klonen.

Djangocelery-Projekt

djangocelery/|-- app/| |-- migrations/| |-- __init__.py| |-- admin.py| |-- apps.py| |-- models.py| |-- tests.py| +-- views.py|-- djangocelery/| |-- __init__.py| |-- settings.py| |-- urls.py| +-- wsgi.py|-- manage.py+-- requirements.txt

Im ersten Schritt müssen Sie die CELERY_BROKER_URL-Konfiguration zum settings.py datei:

Einstellungen.py

CELERY_BROKER_URL = ‘amqp://localhost’

Fügen Sie Ihrem Django-Projekt Sellerie hinzu

Erstellen Sie eine Datei mit dem Namen celery.py angrenzend an Ihre `settings.py ‚ file,

|-- djangocelery/| |-- __init__.py| |-- celery.py| |-- settings.py| |-- urls.py| +-- wsgi.py

Diese Datei enthält die Sellerie-Konfiguration für unser Projekt, Fügen Sie den folgenden Code zum `celery.py ‚ file :

Der obige Code erstellt eine Instanz unseres Projekts.

Sellerie sucht nach Definitionen asynchroner Aufgaben in einer Datei mit dem Namen `tasks.py ‚ Datei in jedem der Anwendungsverzeichnisse.

Bearbeiten Sie die __init__.py

jetzt bearbeiten __init__.py datei im Projektstamm mit diesem Pfad:

|-- djangocelery/| |-- __init__.py

Öffnen Sie es und kopieren Sie den folgenden Code in die Datei und speichern Sie diese.

Dadurch wird sichergestellt, dass unsere Sellerie-App bei jedem Start von Django wichtig ist.

Erste Sellerie-Aufgabe erstellen

Wir können eine Datei mit dem Namen tasks erstellen.die Sellerie-App, die wir im Projektstamm erstellt haben, sammelt alle Aufgaben, die in allen Django-Apps definiert sind, die in der INSTALLED_APPSconfiguration aufgeführt sind.

app/tasks.py

app/views.py

Anstatt die celery_task direkt aufzurufen, rufe ich celery_task auf.delay() , Auf diese Weise weisen wir Sellerie an, diese Funktion im Hintergrund auszuführen, dann verarbeitet Django meine Ansicht celery_view weiter und kehrt reibungslos zum Benutzer zurück

djangocelery/urls.py

Bevor Sie es jedoch versuchen, lesen Sie den nächsten Abschnitt, um zu erfahren, wie Sie den Sellerie-Worker-Prozess starten.

Starten des Worker-Prozesses

Öffnen Sie eine neue Terminal-Registerkarte im Projektpfad und führen Sie den folgenden Befehl aus:

celery -A djangocelery worker -l info

Das Ergebnis ist ungefähr so:

dann starte Django project öffne das http://127.0.0.1:8000/celerytask/ dann nach ein paar Sekunden, Wenn wir den Sellerie-Worker-Prozess erneut überprüfen, Wir können sehen, dass es die Ausführung abgeschlossen hat, erste Seite laden fertig und senden Sie Aufgaben an Sellerie dann Sellerie empfangene Aufgaben:

Received Tasks

After 30seconds tasks functions done and return successful strings :

Erledigte Aufgaben

Überwachung von Sellerie-Arbeitern

Es gibt ein praktisches webbasiertes Tool namens Flower, das zur Überwachung und Verwaltung von Sellerie-Clustern verwendet werden kann. Flower bietet detaillierte Statistiken zum Fortschritt und Verlauf von Aufgaben. Es zeigt auch andere Aufgabendetails wie die übergebenen Argumente, die Startzeit, die Laufzeit und andere.

install Flower

pip install flower

Nach der Installation müssen Sie eine neue Befehlszeile im Projektverzeichnis öffnen und diesen Befehl ausführen:

celery -A djangocelery worker -l info

Öffnen Sie dann eine neue Befehlszeile im Projektpfad und führen Sie diesen Befehl aus:

celery -A djangocelery flower

Blume verbindung

Die Details können dann angezeigt werden, indem Sie http://localhost:5555/dashboard in Ihrem Browser wie :

flower dashboard

flower tasks

flower task details

Zusätzlich :

Sie können alle ausstehenden Aufgaben löschen mit :

celery -A proj purge

Das war’s. Erfolgen.

Schreibe einen Kommentar

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