Maison > Article > développement back-end > Comment intégrer Celery et Redis dans Django pour implémenter le traitement des tâches asynchrones
Comment intégrer Celery et Redis dans Django pour implémenter le traitement des tâches asynchrones
Introduction :
Dans les applications Web, il existe de nombreuses tâches chronophages, telles que l'envoi d'e-mails, le traitement d'images, la génération de rapports, etc. Si ces tâches sont traitées de manière synchrone, cela affectera sérieusement l'expérience utilisateur, c'est pourquoi un système de traitement de tâches asynchrone doit être utilisé.
Django est un framework Web Python populaire et Celery est un système de file d'attente de tâches distribué open source qui fournit des solutions de traitement de tâches asynchrones. Afin d'implémenter le traitement des tâches asynchrones, nous devons également utiliser Redis comme courtier de messages de Celery.
Cet article expliquera comment intégrer Celery et Redis dans Django pour réaliser un traitement de tâches asynchrone. Ce qui suit sera divisé en quatre parties pour expliquer : l'installation et la configuration, la création de tâches, l'appel de tâches et les tâches de surveillance.
1. Configuration de l'installation
Installer Celery et Redis
Utilisez la commande pip pour installer Celery et Redis :
pip install celery redis
Configurer les paramètres 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'
ici La configuration spécifie l'utilisation de Redis comme courtier de messages et magasin de résultats.
Démarrez Celery Worker
Créez un fichier nommé celery.py dans le répertoire racine du projet Django et ajoutez le contenu suivant :
from celery import Celery import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings') app = Celery('project') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks()
Le but de ce fichier est de créer une instance Celery et de charger la configuration de Django projet.
Exécutez la commande suivante dans le terminal pour démarrer Celery Worker :
celery -A project worker --loglevel=info
2. Créez des tâches
Créez un fichier tâches.py
Créez un fichier nommé tâches.py dans un répertoire d'application du projet Django, Et ajoutez ce qui suit :
from celery import shared_task @shared_task def add(x, y): return x + y
Ici, une tâche appelée add est définie qui reçoit deux paramètres x et y et renvoie leur somme.
3. Appelez la tâche
Les tâches Celery peuvent être appelées dans la fonction view de Django ou ailleurs de la manière suivante :
from app.tasks import add result = add.delay(1, 2)
Ici, la méthode delay() et les paramètres sont utilisés pour appeler la tâche add, et le résultat est enregistré dans la variable de résultat.
4. Surveillance des tâches
Pour surveiller l'exécution des tâches dans Django, vous pouvez utiliser l'outil Flower fourni par Celery. Il peut être installé et configuré en suivant les étapes :
Installez Flower
Installez Flower à l'aide de la commande pip :
pip install flower
Démarrez Flower
Démarrez Flower en exécutant la commande suivante dans le terminal :
celery flower --broker=redis://localhost:6379/0
Résumé :
Grâce aux étapes ci-dessus, nous pouvons intégrer Celery et Redis dans Django pour implémenter le traitement des tâches asynchrones. Lors du développement d'applications Web, le traitement des tâches asynchrones peut considérablement améliorer l'expérience utilisateur et les performances du système, ce qui lui confère une grande valeur d'application dans les projets réels. Dans le même temps, en surveillant l'exécution des tâches, nous pouvons rapidement découvrir et résoudre les problèmes de traitement des tâches afin de garantir la stabilité et la fiabilité du système.
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!