Heim > Backend-Entwicklung > Python-Tutorial > Nutzen Sie die Django-Technologie von Celery Redis, um eine skalierbare asynchrone Aufgabenverarbeitung zu erreichen

Nutzen Sie die Django-Technologie von Celery Redis, um eine skalierbare asynchrone Aufgabenverarbeitung zu erreichen

王林
Freigeben: 2023-09-26 18:19:44
Original
1664 Leute haben es durchsucht

利用Celery Redis Django技术实现可扩展的异步任务处理

Verwendung der Celery Redis Django-Technologie zur Erzielung einer skalierbaren asynchronen Aufgabenverarbeitung

Einführung:
In modernen Webanwendungen ist die asynchrone Aufgabenverarbeitung zu einer wichtigen Anforderung geworden. Da einige Aufgaben zeitaufwändig sein können oder im Hintergrund ausgeführt werden müssen, kann die Verwendung asynchroner Aufgaben die Leistung und Benutzererfahrung Ihrer Anwendung verbessern. Um eine skalierbare asynchrone Aufgabenverarbeitung zu erreichen, können wir Celery-, Redis- und Django-Technologien kombinieren, wodurch unsere Anwendungen bei der Verarbeitung umfangreicher Aufgaben horizontal skaliert werden können. In diesem Artikel wird erläutert, wie ein skalierbares asynchrones Aufgabenverarbeitungssystem mithilfe der Celery-, Redis- und Django-Technologien implementiert wird, und es werden spezifische Codebeispiele bereitgestellt.

1. Installieren und konfigurieren Sie Celery, Redis und Django

  1. Installieren Sie Celery:
    Zuerst müssen wir die Celery-Bibliothek installieren. Die Celery-Bibliothek kann durch Ausführen des folgenden Befehls installiert werden:
pip install celery
Nach dem Login kopieren
  1. Redis installieren:
    Als nächstes müssen wir Redis als unseren Nachrichtenbroker installieren. Redis kann durch Ausführen des folgenden Befehls installiert werden:
pip install redis
Nach dem Login kopieren
  1. Django installieren:
    Dann müssen wir das Django-Framework installieren. Django kann durch Ausführen des folgenden Befehls installiert werden:
pip install django
Nach dem Login kopieren
  1. Celery konfigurieren:
    Fügen Sie in der Datei „settings.py“ des Django-Projekts die folgende Celery-Konfiguration hinzu:
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
Nach dem Login kopieren
  1. Erstellen Sie eine Celery-Instanz:
    Im __init__ Fügen Sie in der .py-Datei des Django-Projekts den folgenden Code hinzu:
from celery import Celery

app = Celery('your_app_name')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
Nach dem Login kopieren

2. Schreiben Sie asynchronen Aufgabencode

  1. Erstellen Sie die Datei „tasks.py“:
    Erstellen Sie im Stammverzeichnis des Django-Projekts eine Datei mit dem Namen „tasks.py“.
  2. Asynchrone Aufgaben schreiben:
    In task.py können wir eine asynchrone Aufgabe definieren. Zum Beispiel schreiben wir eine einfache asynchrone Aufgabe, um den Prozess der Verarbeitung asynchroner Aufgaben durch Celery zu demonstrieren:
from celery import shared_task
from time import sleep

@shared_task
def send_email():
    sleep(5)  # 休眠5秒来模拟一个耗时的任务
    # 在此处编写发送邮件的代码
    print("邮件发送成功!")
Nach dem Login kopieren

3. Starten Sie Celery Worker und Beat

  1. Starten Sie Celery Worker:
    Navigieren Sie in der Befehlszeile zum Stammverzeichnis von Öffnen Sie das Django-Projekt und führen Sie den folgenden Befehl aus, um Celery Worker zu starten:
celery -A your_app_name worker --loglevel=info
Nach dem Login kopieren
  1. Starten Sie Celery Beat:
    Navigieren Sie in der Befehlszeile zum Stammverzeichnis des Django-Projekts und führen Sie den folgenden Befehl aus, um Celery Beat zu starten (zur Ausführung). Aufgaben periodisch):
celery -A your_app_name beat --loglevel=info
Nach dem Login kopieren

4. Rufen Sie asynchrone Aufgaben in Django-Ansichten auf.

  1. Asynchrone Aufgaben in Django-Ansichten importieren:
    Wo immer eine asynchrone Aufgabe aufgerufen werden muss, müssen wir die Aufgabe importieren. Beispielsweise können Sie in der Datei „views.py“ die folgende Importanweisung hinzufügen:
from your_app_name.tasks import send_email
Nach dem Login kopieren
  1. Rufen Sie eine asynchrone Aufgabe auf:
    Wenn Sie eine asynchrone Aufgabe aufrufen müssen, verwenden Sie die Methode .delay(), um die Aufgabe aufzurufen. In einer Django-Ansichtsfunktion können wir beispielsweise den folgenden Code ausführen, um die Aufgabe send_email aufzurufen:
def some_view(request):
    # 其他代码...
    send_email.delay()
    # 其他代码...
Nach dem Login kopieren

Durch die oben genannten Schritte haben wir ein skalierbares asynchrones Aufgabenverarbeitungssystem basierend auf Celery, Redis und Django implementiert. Wir verwenden Celery und Redis als Nachrichtenbroker und Ergebnisspeicher und verwenden Django, um asynchrone Aufgaben zu verwalten und zu planen. Auf diese Weise kann unsere Anwendung eine große Anzahl asynchroner Aufgaben bewältigen und ist horizontal skalierbar.

Fazit:
Mithilfe der Celery-, Redis- und Django-Technologien können wir problemlos ein skalierbares asynchrones Aufgabenverarbeitungssystem implementieren. Durch die richtige Konfiguration und Planung kann unsere Anwendung eine große Anzahl asynchroner Aufgaben effizient bewältigen und so das Benutzererlebnis und die Anwendungsleistung verbessern. Gleichzeitig können wir zuverlässige Tools wie Celery und Redis nutzen, um unser System bei der Verarbeitung umfangreicher Aufgaben stabil und zuverlässig zu machen.

Referenzlink:

  1. https://docs.celeryproject.org/en/stable/index.html
  2. https://realpython.com/asynchronous-tasks-with-django-and-celery/

Das obige ist der detaillierte Inhalt vonNutzen Sie die Django-Technologie von Celery Redis, um eine skalierbare asynchrone Aufgabenverarbeitung zu erreichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage