Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die asynchrone Aufgabenverarbeitung mit Celery, Redis und Django

So implementieren Sie die asynchrone Aufgabenverarbeitung mit Celery, Redis und Django

WBOY
WBOYOriginal
2023-09-27 10:15:36982Durchsuche

So implementieren Sie die asynchrone Aufgabenverarbeitung mit Celery, Redis und Django

So implementieren Sie mit Celery, Redis und Django die asynchrone Aufgabenverarbeitung

Einführung:
Bei der Entwicklung von Webanwendungen stoßen wir häufig auf Aufgaben, deren Ausführung viel Zeit in Anspruch nimmt, z. B. das Senden von E-Mails, das Generieren von PDF-Dateien usw . . Wenn diese Aufgaben im Hauptthread ausgeführt werden, muss der Benutzer warten, bis die Aufgabenausführung abgeschlossen ist, bevor er eine Antwort erhält, was sich auf die Benutzererfahrung auswirkt. Um die Leistung zu verbessern, können wir diese zeitaufwändigen Aufgaben mithilfe der asynchronen Aufgabenverarbeitung im Hintergrund ausführen, sodass Benutzer schnell Antworten erhalten können. In diesem Artikel wird die Verwendung von Celery, Redis und Django zur Implementierung der asynchronen Aufgabenverarbeitung vorgestellt und detaillierte Codebeispiele gegeben.

1. Was sind Celery, Redis und Django?

  1. Celery ist eine asynchrone Aufgabenverarbeitungsbibliothek, die auf verteilter Nachrichtenübertragung basiert. Sie kann Aufgaben in mehrere Unteraufgaben aufteilen und diese zur gleichzeitigen Ausführung auf verschiedene Worker-Knoten verteilen. Celery unterstützt mehrere Nachrichtenübertragungsmethoden wie RabbitMQ, Redis usw.
  2. Redis ist eine leistungsstarke Schlüssel-Wert-Paar-Speicherdatenbank, die zum Speichern von Zwischenergebnissen und Statusinformationen von Celery-Aufgaben verwendet werden kann.
  3. Django ist ein fortschrittliches Python-Webframework für die Entwicklung von Webanwendungen.

2. Installieren und konfigurieren Sie Celery, Redis und Django Redis hier Läuft lokal auf Port 6379.

  1. Django-Anwendung und asynchrone Aufgabe erstellen:

    Erstellen Sie eine Anwendung im Django-Projekt und definieren Sie eine asynchrone Aufgabe.
  2. pip install celery
    pip install redis
  3. 4. Django-Ansichten schreiben und asynchrone Aufgaben testen


    Django-Ansichten schreiben:

    Schreiben Sie eine Ansichtsfunktion in die Datei „views.py“ der Django-Anwendung, um Benutzeranfragen zu empfangen und asynchrone Aufgaben aufzurufen.
  4. # Celery配置
    CELERY_BROKER_URL = 'redis://localhost:6379/0'
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
    CELERY_ACCEPT_CONTENT = ['json']
    CELERY_RESULT_SERIALIZER = 'json'
    CELERY_TASK_SERIALIZER = 'json'
    CELERY_TIMEZONE = 'Asia/Shanghai'
  5. Erstellen Sie eine Django-Vorlage:
    Erstellen Sie eine send_email.html-Vorlagendatei im Vorlagenverzeichnis der Django-Anwendung, um die Ergebnisse des E-Mail-Versands anzuzeigen.

    Starten Sie den Celery-Worker:
  6. Führen Sie den folgenden Befehl in der Befehlszeile aus, um den Celery-Worker zu starten:
  7. # 创建Django应用
    python manage.py startapp myapp
    
    # 在myapp/tasks.py中定义异步任务
    from celery import shared_task
    
    @shared_task
    def send_email_task(email):
     # 发送邮件的逻辑


    Testen Sie die asynchrone Aufgabe:
  8. Starten Sie den Django-Entwicklungsserver, greifen Sie auf die URL zu, um die E-Mail zu senden, und bestehen Sie die E-Mail-Parameter. Celery stellt die Aufgabe in die Nachrichtenwarteschlange und führt sie im Hintergrund aus.
  9. from django.shortcuts import render
    from myapp.tasks import send_email_task
    
    def send_email(request):
     # 获取用户请求参数
     email = request.GET.get('email')
     # 调用异步任务
     send_email_task.delay(email)
     return render(request, 'send_email.html')

  10. Zusammenfassung:

    Asynchrone Aufgabenverarbeitung kann einfach mit Celery, Redis und Django implementiert werden. Durch die Ausführung zeitaufwändiger Aufgaben im Hintergrund können die Leistung und das Benutzererlebnis von Webanwendungen erheblich verbessert werden. In der tatsächlichen Entwicklung können Aufgaben auch entsprechend spezifischer Anforderungen optimiert und erweitert werden, z. B. durch Festlegen der Priorität und Zeitüberschreitung von Aufgaben, Behandeln von Fehlern bei der Aufgabenausführung usw. Ich hoffe, dieser Artikel kann Ihnen helfen, Celery, Redis und Django zu verstehen und zu verwenden, um die asynchrone Aufgabenverarbeitung zu implementieren.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die asynchrone Aufgabenverarbeitung mit Celery, Redis und Django. 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