Maison >développement back-end >Tutoriel Python >Expérience pratique : Intégration de Celery et Redis dans Django pour implémenter des tâches asynchrones

Expérience pratique : Intégration de Celery et Redis dans Django pour implémenter des tâches asynchrones

WBOY
WBOYoriginal
2023-09-26 16:33:371569parcourir

Expérience pratique : Intégration de Celery et Redis dans Django pour implémenter des tâches asynchrones

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.

  1. Installez et configurez Celery et Redis :
    Tout d'abord, assurez-vous que Celery et Redis sont installés. Vous pouvez installer Celery en utilisant pip comme suit :
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é.

  1. Créer des tâches Celery :
    Dans le répertoire racine de votre projet Django, créez un fichier appelé tâches.py. Dans ce fichier, définissez vos tâches Céleri. Voici un exemple de code :
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.

  1. Call Celery Task :
    Maintenant que nous avons défini une tâche Celery, l'étape suivante consiste à l'appeler dans une vue Django. Supposons que vous ayez une fonction d'affichage dans votre fichier vues.py qui doit effectuer une opération fastidieuse. Vous pouvez appeler des tâches Celery comme suit :
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.

  1. Démarrer le travailleur Celery :
    Pour exécuter les tâches de céleri, nous devons démarrer le travailleur Celery. Dans le répertoire racine de votre projet, ouvrez une fenêtre de terminal et exécutez la commande suivante :
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.

  1. Surveiller l'exécution des tâches :
    Vous pouvez utiliser Flower, un outil utilitaire, pour surveiller les tâches Celery en cours d'exécution. Tout d'abord, assurez-vous que Flower est installé :
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!

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