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

王林
Libérer: 2023-09-27 12:01:58
original
838 Les gens l'ont consulté

构建高效的异步任务处理系统:采用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
    Copier après la connexion
  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'
    Copier après la connexion
  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()
    Copier après la connexion
  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
    Copier après la connexion
  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')
    Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!