Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen Sie ein effizientes asynchrones Aufgabenverarbeitungssystem: mit Celery Redis Django

Erstellen Sie ein effizientes asynchrones Aufgabenverarbeitungssystem: mit Celery Redis Django

王林
王林Original
2023-09-27 12:01:58861Durchsuche

构建高效的异步任务处理系统:采用Celery Redis Django

Erstellen Sie ein effizientes asynchrones Aufgabenverarbeitungssystem: Verwenden Sie Celery Redis Django.

Einführung:
In modernen Webanwendungen ist die Verarbeitung asynchroner Aufgaben eine sehr wichtige Aufgabe. Durch die asynchrone Aufgabenverarbeitung können wir zeitaufwändige Aufgaben von Anfragen der Hauptanwendung entkoppeln und so das Benutzererlebnis und die Gesamtleistung verbessern. In diesem Artikel stellen wir vor, wie Sie mithilfe der Celery-, Redis- und Django-Frameworks ein effizientes asynchrones Aufgabenverarbeitungssystem aufbauen.

1. Einführung in Celery:
Celery ist ein Python-Framework für verteilte Aufgabenwarteschlangen, das es uns ermöglicht, Aufgaben an Prozessoren oder Arbeiter zu verteilen und über Nachrichtenwarteschlangen zu kommunizieren. Celery unterstützt mehrere Backends wie Redis, RabbitMQ usw., aber in diesem Artikel verwenden wir Redis als Speicher-Backend für die Nachrichtenwarteschlange.

2. Einführung in Redis:
Redis ist ein Open-Source-In-Memory-Datenstrukturspeichersystem, das als Datenbank, Cache und Nachrichten-Middleware verwendet werden kann. Redis zeichnet sich durch hohe Leistung, Skalierbarkeit und Haltbarkeit aus und eignet sich zum Aufbau effizienter asynchroner Aufgabenverarbeitungssysteme. ?? Projekt, fügen Sie die folgenden Konfigurationselemente hinzu:

pip install Celery redis

    Erstellen Sie eine Celery-Instanz:
  1. Erstellen Sie im Stammverzeichnis des Django-Projekts eine celery.py-Datei und fügen Sie den folgenden Inhalt hinzu:

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

  2. Erstellen Sie eine asynchrone Aufgabe:
  3. Erstellen Sie im Django-Projekt eine Datei „tasks.py“ und fügen Sie den folgenden Inhalt hinzu:

    from __future__ import absolute_import, unicode_literals
    import os
    from celery import Celery
    
    # 设置默认的DJANGO_SETTINGS_MODULE环境变量
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
    
    # 创建Celery实例
    app = Celery('your_project')
    
    # 从Django配置中加载Celery设置
    app.config_from_object('django.conf:settings', namespace='CELERY')
    
    # 自动从所有已注册的Django app中加载任务模块
    app.autodiscover_tasks()

  4. Lösen Sie die asynchrone Aufgabe aus:
  5. Lösen Sie in der Django-Ansichtsfunktion die Ausführung der Aufgabe aus, indem Sie die Methode „delay()“ aufrufen asynchrone Aufgabe:

    from __future__ import absolute_import, unicode_literals
    from your_project.celery import app
    
    # 定义异步任务
    @app.task
    def process_task(data):
     # 执行异步任务的逻辑处理
     result = process_data(data)
     return result

  6. IV. Starten Sie den Celery-Worker:
  7. Geben Sie den folgenden Befehl in das Terminal ein, um den Celery-Worker zu starten:

    from django.shortcuts import render
    from your_app.tasks import process_task
    
    def your_view(request):
     if request.method == 'POST':
         data = request.POST.get('data')
         # 触发异步任务
         result = process_task.delay(data)
         # 返回任务结果给用户
         return render(request, 'result.html', {'result': result.id})
     else:
         return render(request, 'your_form.html')

    5. Überwachen Sie asynchrone Aufgaben:

    Mit den von Celery bereitgestellten Tools können wir überwachen und Verwalten Sie die Ausführung asynchroner Aufgaben. Sie können beispielsweise das Flower-Tool verwenden, um eine Webschnittstelle zur Überwachung der asynchronen Aufgabenwarteschlange zu starten:
  8. celery -A your_project worker --loglevel=info
  9. 6. Zusammenfassung:

    In diesem Artikel haben wir vorgestellt, wie Sie die Frameworks Celery, Redis und Django verwenden, um eine effiziente asynchrone Aufgabe zu erstellen Verarbeitungssystem. Durch den Einsatz von Celery und Redis können wir zeitaufwändige Aufgaben problemlos asynchron verarbeiten und die Anwendungsleistung und Benutzererfahrung verbessern. Das Design dieses asynchronen Aufgabenverarbeitungssystems kann auf verschiedene Anforderungen angewendet werden, z. B. auf das Versenden von E-Mails im Hintergrund, die Bildverarbeitung usw. Ich hoffe, dass dieser Artikel Ihnen beim Aufbau eines effizienten asynchronen Aufgabenverarbeitungssystems hilft.

Das obige ist der detaillierte Inhalt vonErstellen Sie ein effizientes asynchrones Aufgabenverarbeitungssystem: mit Celery Redis 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