Technische Analyse von Celery Redis Django: Erreichen einer hochverfügbaren asynchronen Aufgabenverarbeitung

王林
Freigeben: 2023-09-26 12:10:43
Original
1730 Leute haben es durchsucht

Celery Redis Django技术解析:实现高可用的异步任务处理

Celery Redis Django technische Analyse: Um eine hochverfügbare asynchrone Aufgabenverarbeitung zu erreichen, sind spezifische Codebeispiele erforderlich

Einführung:
Im heutigen sich schnell entwickelnden Internetbereich ist es sehr wichtig, eine hochverfügbare asynchrone Aufgabenverarbeitung zu erreichen. In diesem Artikel wird erläutert, wie Sie mit Celery, Redis und Django eine hochverfügbare asynchrone Aufgabenverarbeitung implementieren, und es werden spezifische Codebeispiele aufgeführt.

1. Einführung in das asynchrone Aufgabenverarbeitungs-Framework von Celery:
Celery ist ein in Python geschriebenes Open-Source-Framework für die verteilte Aufgabenplanung, das hauptsächlich zur Verarbeitung einer großen Anzahl gleichzeitiger verteilter Aufgaben verwendet wird. Es bietet Funktionen wie Aufgabenwarteschlangen, Nachrichtenübermittlung und Aufgabenverteilung und kann problemlos eine effiziente verteilte asynchrone Aufgabenverarbeitung implementieren.

2. Einführung in die Redis-Datenbank:
Redis ist eine In-Memory-Datenbank, die Daten in Form von Schlüssel-Wert-Paaren speichert. Es unterstützt Persistenz, Publish/Subscribe, automatisches Löschen abgelaufener Daten und andere Funktionen und ist leistungsstark und skalierbar. In Celery dient Redis als Nachrichten-Middleware und ist für die Speicherung von Aufgaben- und Planungsinformationen verantwortlich, um eine zuverlässige Ausführung von Aufgaben sicherzustellen.

3. Das Django-Framework wird mit Celery Redis kombiniert, um eine hochverfügbare asynchrone Aufgabenverarbeitung zu erreichen:

  1. Installieren Sie Celery und Redis:
    In der virtuellen Umgebung des Django-Projekts verwenden Sie pip, um Celery und Redis zu installieren:

    pip install celery
    pip install redis
    Nach dem Login kopieren
  2. Konfigurieren Sie die Django-Einstellungen.py-Datei:
    Fügen Sie die folgende Konfiguration in der Datei „settings.py“ des Django-Projekts hinzu:

    # Celery配置
    CELERY_BROKER_URL = 'redis://localhost:6379/0'
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
    CELERY_ACCEPT_CONTENT = ['application/json']
    CELERY_TASK_SERIALIZER = 'json'
    CELERY_RESULT_SERIALIZER = 'json'
    Nach dem Login kopieren
    Nach dem Login kopieren
  3. Aufgaben erstellen:
    Erstellen Sie die Datei „tasks.py“ im App-Verzeichnis des Django-Projekts und definieren Sie sie eine asynchrone Aufgabe:

    from celery import shared_task
    
    @shared_task
    def add(x, y):
     return x + y
    Nach dem Login kopieren
  4. Starten Sie den Celery-Worker:
    Wechseln Sie zum Django-Projektverzeichnis im Terminal und starten Sie den Celery-Worker:

    celery -A myproject worker -l info
    Nach dem Login kopieren
  5. Lösen Sie die asynchrone Aufgabe aus:
    Lösen Sie die Ausführung der Aufgabe aus, indem Sie die aufrufen asynchrone Aufgabe in der Ansichtsfunktion oder anderswo im Django-Projekt:

    from myapp.tasks import add
    
    result = add.delay(2, 3)
    Nach dem Login kopieren
  6. Ergebnis der Aufgabenausführung abrufen:
    Ergebnis der Aufgabenausführung über die get-Methode des AsyncResult-Objekts abrufen:

    result = AsyncResult(task_id)
    print(result.result)
    Nach dem Login kopieren

4. Beispielcode:
Konfiguration der Datei „settings.py“:

# Celery配置
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
Nach dem Login kopieren
Nach dem Login kopieren

tasks.py-Datei:

from celery import shared_task

@shared_task
def add(x, y):
    return x + y
Nach dem Login kopieren

views.py-Datei:

from django.http import JsonResponse
from myapp.tasks import add

def my_view(request):
    result = add.delay(2, 3)
    return JsonResponse({'task_id': result.id})
Nach dem Login kopieren

Ergebniserfassungscode:

from celery.result import AsyncResult
from myapp.tasks import add

def getResult(request, task_id):
    result = AsyncResult(task_id)
    if result.ready():
        return JsonResponse({'result': result.result})
    else:
        return JsonResponse({'status': 'processing'})
Nach dem Login kopieren

Fazit:
In diesem Artikel wird beschrieben, wie man Celery, Redis und Django kombiniert, um eine hohe Verfügbarkeit asynchroner Aufgabenverarbeitung. Durch die Konfiguration von Celery und Redis, das Definieren von Aufgaben und das Starten von Celery-Workern kann eine asynchrone Aufgabenplanung und -ausführung erreicht werden. Anhand der obigen Codebeispiele können Sie die Vorteile von Celery Redis Django erleben und entsprechend den spezifischen Anforderungen weiter optimieren und erweitern. Das Obige ist nur ein kleiner Teil der technischen Analyse von Celery Redis Django. Ich hoffe, dass dieser Artikel den Lesern helfen kann.

Das obige ist der detaillierte Inhalt vonTechnische Analyse von Celery Redis Django: Erreichen einer hochverfügbaren asynchronen Aufgabenverarbeitung. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!