Maison  >  Article  >  développement back-end  >  Construire un système de traitement de tâches asynchrone efficace : en utilisant Celery Redis Django

Construire un système de traitement de tâches asynchrone efficace : en utilisant Celery Redis Django

王林
王林original
2023-09-27 12:01:58806parcourir

构建高效的异步任务处理系统:采用Celery Redis Django

Construisez un système de traitement de tâches asynchrones efficace : en utilisant Celery Redis Django

Introduction :
Dans les applications Web modernes, le traitement des tâches asynchrones est une tâche très importante. Le traitement des tâches asynchrones nous permet de dissocier les tâches chronophages des requêtes de l'application principale, améliorant ainsi l'expérience utilisateur et les performances globales. Dans cet article, nous présenterons comment utiliser les frameworks Celery, Redis et Django pour créer un système de traitement de tâches asynchrone efficace.

1. Introduction à Celery :
Celery est un framework de file d'attente de tâches distribuées Python, qui nous permet de distribuer des tâches aux processeurs ou aux travailleurs et de communiquer via des files d'attente de messages. Celery prend en charge plusieurs backends, tels que Redis, RabbitMQ, etc., mais dans cet article, nous utiliserons Redis comme backend de stockage pour la file d'attente des messages.

2. Introduction à Redis :
Redis est un système de stockage de structure de données en mémoire open source qui peut être utilisé comme base de données, cache et middleware de messages. Redis présente les caractéristiques de hautes performances, d'évolutivité et de durabilité, et convient à la création de systèmes de traitement de tâches asynchrones efficaces.

3. Configuration de Celery dans Django :

  1. Installez Celery et Redis :
    Utilisez la commande pip pour installer les bibliothèques Celery et Redis :

    pip install Celery redis
  2. Configurez Django settings.py :
    Dans le fichier settings.py de Django project , ajoutez les éléments de configuration suivants :

    # Celery settings
    CELERY_BROKER_URL = 'redis://localhost:6379/0'
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
  3. Créez une instance Celery :
    Dans le répertoire racine du projet Django, créez un fichier celery.py et ajoutez le contenu suivant :

    from __future__ import absolute_import, unicode_literals
    import os
    from celery import Celery
    
    # 设置默认的DJANGO_SETTINGS_MODULE环境变量
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
    
    # 创建Celery实例
    app = Celery('your_project')
    
    # 从Django配置中加载Celery设置
    app.config_from_object('django.conf:settings', namespace='CELERY')
    
    # 自动从所有已注册的Django app中加载任务模块
    app.autodiscover_tasks()
  4. Créez une tâche asynchrone :
    Dans le projet Django, Créez un fichier tâches.py et ajoutez le contenu suivant :

    from __future__ import absolute_import, unicode_literals
    from your_project.celery import app
    
    # 定义异步任务
    @app.task
    def process_task(data):
     # 执行异步任务的逻辑处理
     result = process_data(data)
     return result
  5. Déclenchez la tâche asynchrone :
    Dans la fonction vue Django, déclenchez l'exécution de la tâche en appelant la méthode delay() du tâche asynchrone :

    from django.shortcuts import render
    from your_app.tasks import process_task
    
    def your_view(request):
     if request.method == 'POST':
         data = request.POST.get('data')
         # 触发异步任务
         result = process_task.delay(data)
         # 返回任务结果给用户
         return render(request, 'result.html', {'result': result.id})
     else:
         return render(request, 'your_form.html')

IV. Démarrez le travailleur Celery :
Entrez la commande suivante dans le terminal pour démarrer le travailleur Celery :

celery -A your_project worker --loglevel=info

5. Surveillez les tâches asynchrones :
Grâce aux outils fournis par Celery, nous pouvons surveiller et gérer l’exécution de tâches asynchrones. Par exemple, vous pouvez utiliser l'outil Flower pour démarrer une interface Web afin de surveiller la file d'attente des tâches asynchrones :

pip install flower

# 启动Flower
flower -A your_project

6. Résumé :
Dans cet article, nous avons présenté comment utiliser les frameworks Celery, Redis et Django pour créer une tâche asynchrone efficace système de traitement. En utilisant Celery et Redis, nous pouvons facilement traiter des tâches chronophages de manière asynchrone et améliorer les performances des applications et l'expérience utilisateur. La conception de ce système de traitement de tâches asynchrone peut être appliquée à divers besoins, tels que l'envoi d'e-mails en arrière-plan, le traitement d'images, etc. J'espère que cet article vous aidera à créer un système de traitement de tâches asynchrone efficace.

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