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:
After 30seconds tasks functions done and return successful strings :