Maison  >  Article  >  développement back-end  >  Analyse technique de Celery Redis Django : réalisation d'un traitement de tâches asynchrone à haute disponibilité

Analyse technique de Celery Redis Django : réalisation d'un traitement de tâches asynchrone à haute disponibilité

王林
王林original
2023-09-26 12:10:431707parcourir

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

Analyse technique de Celery Redis Django : pour obtenir un traitement de tâches asynchrones à haute disponibilité, des exemples de code spécifiques sont nécessaires

Introduction :
Dans le domaine Internet en développement rapide actuel, il est très important d'obtenir un traitement de tâches asynchrones à haute disponibilité. Cet article expliquera comment utiliser Celery, Redis et Django pour implémenter un traitement de tâches asynchrone hautement disponible et donnera des exemples de code spécifiques.

1. Introduction au framework de traitement de tâches asynchrones Celery :
Celery est un framework de planification de tâches distribuées open source écrit en Python, principalement utilisé pour traiter un grand nombre de tâches distribuées simultanées. Il fournit des fonctions telles que les files d'attente de tâches, la transmission de messages et la distribution de tâches, et peut facilement mettre en œuvre un traitement de tâches asynchrone distribué efficace.

2. Introduction à la base de données Redis :
Redis est une base de données en mémoire qui stocke les données sous forme de paires clé-valeur. Il prend en charge la persistance, la publication/abonnement, la suppression automatique des données expirées et d'autres fonctions, et est hautes performances et évolutif. Dans Celery, Redis sert d'intergiciel de messages et est responsable du stockage des informations sur les tâches et la planification afin de garantir une exécution fiable des tâches.

3. Le framework Django se combine avec Celery Redis pour obtenir un traitement de tâches asynchrone à haute disponibilité :

  1. Installez Celery et Redis :
    Dans l'environnement virtuel du projet Django, utilisez pip pour installer Celery et Redis :

    pip install celery
    pip install redis
  2. Configurez le fichier settings.py de Django :
    Ajoutez la configuration suivante dans le fichier settings.py du projet Django :

    # 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'
  3. Créez des tâches :
    Créez le fichier tâches.py dans le répertoire app du projet Django et définissez une tâche asynchrone :

    from celery import shared_task
    
    @shared_task
    def add(x, y):
     return x + y
  4. Démarrez le travailleur Celery :
    Basculez dans le répertoire du projet Django dans le terminal et démarrez le travailleur Celery :

    celery -A myproject worker -l info
  5. Déclenchez la tâche asynchrone :
    Déclenchez l'exécution de la tâche en appelant le tâche asynchrone dans la fonction view ou ailleurs dans le projet Django :

    from myapp.tasks import add
    
    result = add.delay(2, 3)
  6. Obtenir le résultat de l'exécution de la tâche :
    Obtenir le résultat de l'exécution de la tâche via la méthode get de l'objet AsyncResult :

    result = AsyncResult(task_id)
    print(result.result)

4. Exemple de code :
Configuration du fichier 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'

tasks.py fichier :

from celery import shared_task

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

views.py fichier :

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})

Code d'acquisition du résultat :

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'})

Conclusion :
Cet article explique comment combiner Celery, Redis et Django pour obtenir des performances élevées. disponibilité du traitement des tâches asynchrones. En configurant Celery et Redis, en définissant des tâches et en démarrant des Workers Celery, vous pouvez planifier et exécuter des tâches asynchrones. Grâce aux exemples de code ci-dessus, vous pouvez découvrir les avantages de Celery Redis Django, puis optimiser et développer davantage en fonction de besoins spécifiques. Ce qui précède n'est qu'une petite partie de l'analyse technique de Celery Redis Django. Il y a plus à apprendre et à explorer. J'espère que cet article pourra aider les lecteurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn