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é :
Installez Celery et Redis :
Dans l'environnement virtuel du projet Django, utilisez pip pour installer Celery et Redis :
pip install celery pip install redis
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'
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
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
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)
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!