Heim  >  Artikel  >  Backend-Entwicklung  >  So integrieren Sie Celery und Redis in Django, um eine asynchrone Aufgabenverarbeitung zu implementieren

So integrieren Sie Celery und Redis in Django, um eine asynchrone Aufgabenverarbeitung zu implementieren

王林
王林Original
2023-09-28 17:40:52961Durchsuche

So integrieren Sie Celery und Redis in Django, um eine asynchrone Aufgabenverarbeitung zu implementieren

So integrieren Sie Celery und Redis in Django, um die asynchrone Aufgabenverarbeitung zu implementieren

Einführung:
In Webanwendungen gibt es viele zeitaufwändige Aufgaben, wie das Versenden von E-Mails, das Verarbeiten von Bildern, das Erstellen von Berichten usw. Wenn diese Aufgaben synchron verarbeitet werden, beeinträchtigt dies die Benutzererfahrung erheblich. Daher muss ein asynchrones Aufgabenverarbeitungssystem verwendet werden.

Django ist ein beliebtes Python-Webframework und Celery ist ein verteiltes Open-Source-Aufgabenwarteschlangensystem, das asynchrone Aufgabenverarbeitungslösungen bietet. Um die asynchrone Aufgabenverarbeitung zu implementieren, müssen wir auch Redis als Nachrichtenbroker von Celery verwenden.

In diesem Artikel erfahren Sie, wie Sie Celery und Redis in Django integrieren, um eine asynchrone Aufgabenverarbeitung zu erreichen. Das Folgende wird zur Erläuterung in vier Teile unterteilt: Installation und Konfiguration, Aufgaben erstellen, Aufgaben aufrufen und Aufgaben überwachen.

1. Installationskonfiguration

  1. Installieren Sie Celery und Redis.
    Verwenden Sie den Befehl pip, um Celery und Redis zu installieren:

    pip install celery redis
  2. Konfigurieren Sie die Django-Einstellungen

    # Celery配置
    CELERY_BROKER_URL = 'redis://localhost:6379/0'
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

    hier Die Konfiguration gibt die Verwendung von Redis als Nachrichtenbroker und Ergebnisspeicher an.

  3. Celery Worker starten
  4. Erstellen Sie eine Datei mit dem Namen celery.py im Stammverzeichnis des Django-Projekts und fügen Sie den folgenden Inhalt hinzu:

    from celery import Celery
    import os
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
    
    app = Celery('project')
    app.config_from_object('django.conf:settings', namespace='CELERY')
    app.autodiscover_tasks()

    Der Zweck dieser Datei besteht darin, eine Celery-Instanz zu erstellen und die Konfiguration des Django zu laden Projekt.

  5. Führen Sie den folgenden Befehl im Terminal aus, um Celery Worker zu starten:
celery -A project worker --loglevel=info

2. Aufgaben erstellen

    Datei „tasks.py“ erstellen
  1. Erstellen Sie eine Datei mit dem Namen „tasks.py“ in einem App-Verzeichnis des Django-Projekts füge Folgendes hinzu:

    from celery import shared_task
    
    @shared_task
    def add(x, y):
     return x + y

    Hier wird eine Aufgabe namens add definiert, die zwei Parameter x und y empfängt und deren Summe zurückgibt.

  2. 3. Rufen Sie die Aufgabe auf
Celery-Aufgaben können in der Ansichtsfunktion von Django oder anderswo auf folgende Weise aufgerufen werden:

from app.tasks import add

result = add.delay(1, 2)

Hier werden die Methode und die Parameter „delay()“ verwendet, um die Aufgabe „add“ aufzurufen, und das Ergebnis ist in der Ergebnisvariablen gespeichert.

4. Aufgaben überwachen

Um die Ausführung von Aufgaben in Django zu überwachen, können Sie das von Celery bereitgestellte Flower-Tool verwenden. Es kann installiert und konfiguriert werden, indem Sie die folgenden Schritte ausführen:


    Flower installieren
  1. Flower mit dem Pip-Befehl installieren:

    pip install flower

  2. Flower starten
  3. Flower starten, indem Sie den folgenden Befehl im Terminal ausführen:

    celery flower --broker=redis://localhost:6379/0

    Visit Flower
  4. in einem Browser Besuchen Sie http://localhost:5555, um die Überwachungsoberfläche von Flower aufzurufen, wo Sie die Ausführung von Aufgaben überwachen, Aufgabendetails anzeigen usw. können.

  5. Zusammenfassung:
Durch die oben genannten Schritte können wir Celery und Redis in Django integrieren, um eine asynchrone Aufgabenverarbeitung zu implementieren. Bei der Entwicklung von Webanwendungen kann die asynchrone Aufgabenverarbeitung das Benutzererlebnis und die Systemleistung erheblich verbessern, sodass sie in tatsächlichen Projekten von großem Nutzen ist. Gleichzeitig können wir durch die Überwachung der Aufgabenausführung Probleme bei der Aufgabenverarbeitung zeitnah erkennen und lösen, um die Stabilität und Zuverlässigkeit des Systems sicherzustellen.

Das obige ist der detaillierte Inhalt vonSo integrieren Sie Celery und Redis in Django, um eine asynchrone Aufgabenverarbeitung zu implementieren. 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