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

王林
Libérer: 2023-09-26 12:10:43
original
1732 Les gens l'ont consulté

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
    Copier après la connexion
  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'
    Copier après la connexion
    Copier après la connexion
  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
    Copier après la connexion
  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
    Copier après la connexion
  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)
    Copier après la connexion
  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)
    Copier après la connexion

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'
Copier après la connexion
Copier après la connexion

tasks.py fichier :

from celery import shared_task

@shared_task
def add(x, y):
    return x + y
Copier après la connexion

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})
Copier après la connexion

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'})
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!