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

王林
王林original
2023-09-28 17:40:521007parcourir

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

  1. Installer Celery et Redis
    Utilisez la commande pip pour installer Celery et Redis :

    pip install celery redis
  2. 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.

  3. 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

  1. 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 :

  1. Installez Flower
    Installez Flower à l'aide de la commande pip :

    pip install flower
  2. Démarrez Flower
    Démarrez Flower en exécutant la commande suivante dans le terminal :

    celery flower --broker=redis://localhost:6379/0
  3. Visitez Flower
    dans un navigateur Visitez http://localhost:5555 pour accéder à l'interface de surveillance de Flower, où vous pouvez surveiller l'exécution des tâches, afficher les détails des tâches, etc.

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!

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