Expérience pratique : Intégration de Celery et Redis dans Django pour implémenter des tâches asynchrones
Introduction :
Alors que la complexité des applications Web continue d'augmenter, de nombreuses opérations nécessitent beaucoup de temps et de ressources. Afin d'améliorer l'expérience utilisateur et l'efficacité du système, les développeurs doivent souvent convertir certaines opérations fastidieuses en tâches d'exécution asynchrones. Dans Django, nous pouvons implémenter des tâches asynchrones en intégrant Celery et Redis. Cet article vous expliquera comment intégrer Celery et Redis dans Django, avec des exemples de code pratiques.
pip install celery
Ensuite, pour installer Redis, vous pouvez utiliser la commande suivante :
sudo apt-get install redis-server
Une fois l'installation terminée, nous devons configurer le projet Django pour qu'il sache que nous serons en utilisant Céleri et Redis. Dans le fichier settings.py du projet, ajoutez le code suivant :
# CELERY SETTINGS CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
Ici, nous précisons l'adresse locale et le port de Redis. Assurez-vous que votre Redis est en cours d'exécution et écoute sur le port spécifié.
from celery import Celery app = Celery('myapp', broker='redis://localhost:6379/0') @app.task def add(x, y): return x + y
Dans cet exemple, nous créons une application Celery et définissons une tâche nommée add. La tâche d'ajout reçoit deux paramètres x et y et renvoie leur somme.
from myapp.tasks import add def my_view(request): x = 10 y = 20 add.delay(x, y) return HttpResponse("Task added to the queue.")
Dans cet exemple, nous avons importé la tâche d'ajout définie précédemment et l'avons appelée dans la fonction d'affichage. Nous utilisons la méthode delay() pour ajouter la tâche à la file d'attente Celery et renvoyer immédiatement la HttpResponse à l'utilisateur. De cette façon, les utilisateurs ne seront pas bloqués lors d'opérations fastidieuses.
celery -A myapp worker -l info
Cela démarrera un travailleur Celery et commencera à traiter les tâches dans la file d'attente. Vous pouvez définir le niveau de journalisation avec le paramètre -l.
pip install flower
Une fois l'installation terminée, ouvrez une nouvelle fenêtre de terminal et exécutez la commande suivante :
flower -A myapp --port=5555
Cela démarrera le serveur Flower et écoutera sur le port 5555. Vous pouvez visiter localhost:5555 dans votre navigateur pour afficher des informations telles que les tâches en cours d'exécution et l'état des tâches.
Conclusion :
En intégrant Celery et Redis, nous pouvons obtenir un traitement asynchrone efficace des tâches dans Django. Cet article couvre les étapes de base pour configurer et utiliser Celery dans un projet Django et fournit des exemples de code pratiques. J'espère que cet article pourra vous aider à réaliser un traitement des tâches asynchrones plus efficace en développement.
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!