Planification de tâches multithread asynchrones dans Django avec Celery

La gestion des tâches dans une application Web peut devenir complexe, en particulier lorsque vous devez effectuer des opérations chronophages de manière asynchrone. Django, un framework Web populaire, peut être étendu avec Celery pour gérer efficacement les tâches asynchrones. Dans cet article de blog, nous allons découvrir comment configurer la planification périodique des tâches avec Celery dans une application Django. Cela permet à votre application d'exécuter des tâches en arrière-plan à des intervalles spécifiés et de décharger le traitement des tâches des threads principaux de l'application.
1. Installez Celery et Django Celery Beat
Le voyage commence par l'installation de Celery et de django-celery-beat. Ce sont des composants essentiels pour la planification et l'exécution des tâches dans Django. Vous pouvez les installer à l'aide de pip :
pip install celery django-celery-beat
2. Configurer Celery
Après avoir installé Celery, vous devez le configurer pour qu'il fonctionne avec votre application Django. Commencez par créer un fichier nommé celery.py dans le répertoire principal de votre projet. Ce fichier initialisera Celery et le liera aux paramètres de Django.
from celery import Celery import os # Set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project_name.settings') app = Celery('your_project_name') # Using a string here means the worker will not have to serialize # the configuration object to child processes. app.config_from_object('django.conf:settings', namespace='CELERY') # Load task modules from all registered Django apps. app.autodiscover_tasks()
Pour vous assurer que cette configuration est chargée au démarrage de Django, importez votre application Celery dans le your_project_name/__init__.py déposer:
from .celery import app as celery_app __all__ = ('celery_app',)
3. Mettre à jour les paramètres Django
Ensuite, intégrez Celery à vos paramètres Django en mettant à jour le settings.py fichier. Cela inclut la spécification de votre courtier et du backend de résultats, qui peut être RabbitMQ ou Redis.
CELERY_BROKER_URL = 'redis://localhost:6379/0' # or 'amqp://localhost//' for RabbitMQ CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' CELERY_TIMEZONE = 'UTC' from celery.schedules import crontab CELERY_BEAT_SCHEDULE = { 'task-name': { 'task': 'myapp.tasks.task_function', 'schedule': crontab(minute=0, hour=0), # Executes daily at midnight }, }
4. Définissez votre tâche
Il est maintenant temps de définir quelles devraient être vos tâches. Créez un tasks.py fichier dans votre application Django (par exemple, myapp ) et ajoutez votre fonction de tâche.
from celery import shared_task @shared_task def task_function(): # Logic for your asynchronous, multithreaded task print("Task is executing")
Ici, @shared_task est un décorateur fourni par Celery qui marque la fonction comme étant une tâche appelable.
5. Exécutez Celery Worker et Beat
Enfin, vous devez exécuter le travailleur Celery et le beat pour commencer à traiter les tâches et à les planifier en fonction de votre configuration.
# Start Celery Worker celery -A your_project_name worker -l info # Start Celery Beat celery -A your_project_name beat -l info
Ces commandes lancent le processus Worker pour traiter les tâches asynchrones et le processus Beat pour gérer les tâches périodiques. Assurez-vous que votre courtier de messages comme Redis ou RabbitMQ est en cours d'exécution avant d'exécuter ces commandes.
En suivant ces étapes, vous avez équipé votre application Django pour gérer efficacement les tâches asynchrones périodiques, améliorant ainsi les performances et la réactivité de votre application. Celery est un outil puissant et, avec cette configuration, vous êtes prêt à explorer des idées de traitement de tâches plus complexes.
Avertissement de republication : Ce contenu est protégé par des droits d'auteur et tous les droits sont réservés par l'auteur. Vous êtes invité à republier ou à partager cette page, mais veuillez vous assurer de fournir un crédit clair à la source originale avec un lien hypertexte renvoyant à cette page. Merci de respecter notre contenu !
Cet article vous a-t-il été utile ?
196 sur 196 ont trouvé cela utile
John Tanner
FondateurJe suis un développeur logiciel hautement qualifié avec plus de 20 ans d'expérience dans le développement multiplateforme full-stack. Je me spécialise dans la conception et la gestion d'architectures de grands projets et la simplification de systèmes complexes. Mon expertise s'étend au développement en Python, Rust et Django. J'ai une grande maîtrise des technologies de blockchain, de l'intelligence artificielle, des systèmes à haute concurrence, du data scraping d'applications et de sites web, du développement d'API, de l'optimisation de bases de données, de la containerisation de projets et du déploiement dans des environnements de production.
Contact John TannerArticle connexe:
- Services de développement Django
- Dévoiler la puissance de Django : le cadre backend ultime
- Créer un site web multilingue avec Django : meilleures pratiques et stratégies SEO
- Comment créer un site Web indépendant réussi pour le commerce extérieur : guide complet de la recherche de marché à l'optimisation SEO
- Création d'applications alimentées par l'IA avec Django