Heim  >  Artikel  >  Backend-Entwicklung  >  Praxiserfahrung: Integration von Celery und Redis in Django zur Implementierung asynchroner Aufgaben

Praxiserfahrung: Integration von Celery und Redis in Django zur Implementierung asynchroner Aufgaben

WBOY
WBOYOriginal
2023-09-26 16:33:371467Durchsuche

Praxiserfahrung: Integration von Celery und Redis in Django zur Implementierung asynchroner Aufgaben

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.

  1. Installieren und konfigurieren Sie Celery und Redis:
    Stellen Sie zunächst sicher, dass Sie Celery und Redis installiert haben. Sie können Celery mit pip wie folgt installieren:
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.

  1. Celery-Aufgaben erstellen:
    Erstellen Sie im Stammverzeichnis Ihres Django-Projekts eine Datei mit dem Namen „tasks.py“. Definieren Sie in dieser Datei Ihre Celery-Aufgaben. Das Folgende ist ein Beispielcode:
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.

  1. Sellerie-Aufgabe aufrufen:
    Da wir nun eine Sellerie-Aufgabe definiert haben, besteht der nächste Schritt darin, sie in einer Django-Ansicht aufzurufen. Angenommen, Sie haben eine Ansichtsfunktion in Ihrer Datei „views.py“, die einen zeitaufwändigen Vorgang ausführen muss. Sie können Celery-Aufgaben wie folgt aufrufen:
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.

  1. Sellerie-Arbeiter starten:
    Um Celery-Aufgaben auszuführen, müssen wir den Sellerie-Arbeiter starten. Öffnen Sie im Stammverzeichnis Ihres Projekts ein Terminalfenster und führen Sie den folgenden Befehl aus:
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.

  1. Aufgabenausführung überwachen:
    Sie können Flower, ein Hilfsprogramm, verwenden, um laufende Celery-Aufgaben zu überwachen. Stellen Sie zunächst sicher, dass Sie Flower installiert haben:
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn