Praxiserfahrung: Integration von Celery und Redis in Django zur Implementierung asynchroner Aufgaben
Einführung:
Da die Komplexität von Webanwendungen immer weiter zunimmt, erfordern viele Vorgänge viel Zeit und Ressourcen. Um das Benutzererlebnis und die Systemeffizienz zu verbessern, müssen Entwickler häufig einige zeitaufwändige Vorgänge zur Ausführung in asynchrone Aufgaben umwandeln. In Django können wir asynchrone Aufgaben implementieren, indem wir Celery und Redis integrieren. In diesem Artikel erfahren Sie anhand praktischer Codebeispiele, wie Sie Celery und Redis in Django integrieren.
pip install celery
Anschließend können Sie zum Installieren von Redis den folgenden Befehl verwenden:
sudo apt-get install redis-server
Nachdem die Installation abgeschlossen ist, müssen wir das Django-Projekt so konfigurieren, dass es weiß, dass wir es tun werden mit Sellerie und Redis. Fügen Sie in der Datei „settings.py“ des Projekts den folgenden Code hinzu:
# CELERY SETTINGS CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
Hier geben wir die lokale Adresse und den Port von Redis an. Stellen Sie sicher, dass Ihr Redis ausgeführt wird und den angegebenen Port überwacht.
from celery import Celery app = Celery('myapp', broker='redis://localhost:6379/0') @app.task def add(x, y): return x + y
In diesem Beispiel erstellen wir eine Celery-Anwendung und definieren eine Aufgabe namens „add“. Die Additionsaufgabe empfängt zwei Parameter x und y und gibt deren Summe zurück.
from myapp.tasks import add def my_view(request): x = 10 y = 20 add.delay(x, y) return HttpResponse("Task added to the queue.")
In diesem Beispiel haben wir die zuvor definierte Add-Aufgabe importiert und in der Ansichtsfunktion aufgerufen. Wir verwenden die Methode „delay()“, um die Aufgabe zur Celery-Warteschlange hinzuzufügen und die HttpResponse sofort an den Benutzer zurückzugeben. Auf diese Weise werden Benutzer bei zeitaufwändigen Vorgängen nicht blockiert.
celery -A myapp worker -l info
Dadurch wird ein Celery-Worker gestartet und mit der Verarbeitung von Aufgaben in der Warteschlange begonnen. Sie können die Protokollebene mit dem Parameter -l festlegen.
pip install flower
Sobald die Installation abgeschlossen ist, öffnen Sie ein neues Terminalfenster und führen Sie den folgenden Befehl aus:
flower -A myapp --port=5555
Dadurch wird der Flower-Server gestartet und auf Port 5555 überwacht. Sie können localhost:5555 in Ihrem Browser aufrufen, um Informationen wie aktuell ausgeführte Aufgaben und den Aufgabenstatus anzuzeigen.
Fazit:
Durch die Integration von Celery und Redis können wir eine effiziente asynchrone Aufgabenverarbeitung in Django erreichen. Dieser Artikel behandelt die grundlegenden Schritte zum Konfigurieren und Verwenden von Celery in einem Django-Projekt und bietet praktische Codebeispiele. Ich hoffe, dieser Artikel kann Ihnen dabei helfen, eine effizientere asynchrone Aufgabenverarbeitung in der Entwicklung zu erreichen.
Das obige ist der detaillierte Inhalt vonPraxiserfahrung: Integration von Celery und Redis in Django zur Implementierung asynchroner Aufgaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!