Céleri et Rabbitmq dans Django Et Surveillance avec Flower, Quelques étapes pour que l’asynchronisation Fonctionne

Au cours de mes 6 années d’expérience en codage, Django est sans aucun doute le meilleur framework avec lequel j’ai jamais travaillé. Parfois, nous allons créer une application Django simple pour exécuter des tâches asynchrones en arrière-plan en utilisant Celery et RabbitMQ.

Python 3.6.8, RabbitMQ 3.6.10

Django==2.2.3, flower==0.9.3, celery==4.3.0

installer RabbitMQ :

apt-get install rabbitmq-server

Le service RabbitMQ démarre automatiquement lors de l’installation. Vous pouvez démarrer manuellement le serveur en exécutant la commande suivante sur la ligne de commande.

rabbitmq-server

Après l’installation de RabbitMQ, vous devez installer python et le package associé avec la commande pip comme:

pip install Django
pip install celery

Ensuite, vous devez créer un projet Django avec une application simple, nous créons un projet djangocelery avec app l, vous pouvez cloner le projet djangocelery sur mon GitHub.

Projet Djangocelery

djangocelery/|-- app/| |-- migrations/| |-- __init__.py| |-- admin.py| |-- apps.py| |-- models.py| |-- tests.py| +-- views.py|-- djangocelery/| |-- __init__.py| |-- settings.py| |-- urls.py| +-- wsgi.py|-- manage.py+-- requirements.txt

La première étape, vous devez ajouter la configuration CELERY_BROKER_URL à la settings.py fichier:

paramètres.py

CELERY_BROKER_URL = ‘amqp://localhost’

Ajoutez du Céleri à votre projet Django

Créez un fichier nommé celery.py adjacent à votre `settings.py ‘ fichier,

|-- djangocelery/| |-- __init__.py| |-- celery.py| |-- settings.py| |-- urls.py| +-- wsgi.py

Ce fichier contiendra la configuration de céleri pour notre projet, Ajoutez le code suivant au `celery.py ‘file:

Le code ci-dessus crée une instance de notre projet, La dernière ligne indique à celery de découvrir automatiquement toutes les tâches asynchrones pour toutes les applications répertoriées sous `INSTALLED_APPS`.

Celery recherchera des définitions de tâches asynchrones dans un fichier nommé `tasks.py ‘ fichier dans chacun des répertoires de l’application.

Modifier le __init__.py

maintenant modifier __init__.py fichier dans la racine du projet avec ce chemin:

|-- djangocelery/| |-- __init__.py

ouvrez-le et copiez le code ci-dessous dans le fichier et enregistrez-le.

Cela garantira que notre application Céleri est importante à chaque démarrage de Django.

Création de la première tâche de Céleri

Nous pouvons créer un fichier nommé tâches.py dans une application Django et placez toutes nos tâches Céleri dans ce fichier, L’application Céleri que nous avons créée à la racine du projet collectera toutes les tâches définies dans toutes les applications Django répertoriées dans la configuration Installed_apps.

app/tasks.py

app/views.py

Au lieu d’appeler directement celery_task, j’appelle celery_task.delay(), de cette façon, nous demandons à Celery d’exécuter cette fonction en arrière-plan, puis Django continue de traiter ma vue celery_view et retourne en douceur à l’utilisateur

djangocelery/urls.py

Mais avant de l’essayer, vérifiez la section suivante pour savoir comment démarrer le processus de travail de Céleri.

Démarrage du processus de travail

Ouvrez un nouvel onglet de terminal sur le chemin du projet et exécutez la commande suivante :

celery -A djangocelery worker -l info

Le résultat est quelque chose comme ceci:

informations sur le travailleur du céleri

puis exécutez le projet Django ouvrez le http://127.0.0.1:8000/celerytask/ puis après quelques secondes, Si nous vérifions à nouveau le processus de travail du Céleri, nous pouvons le voir terminé l’exécution, charger d’abord la page terminée et envoyer des tâches au céleri puis le céleri a reçu des tâches:

Received Tasks

After 30seconds tasks functions done and return successful strings :

Tâches effectuées

Surveillance des travailleurs du céleri

Il existe un outil Web pratique appelé Flower qui peut être utilisé pour surveiller et administrer les grappes de Céleri, Flower fournit des statistiques détaillées de la progression et de l’historique des tâches, Il montre également d’autres détails de la tâche tels que les arguments passés, l’heure de début, l’exécution, etc.

installer Flower

pip install flower

Une fois installé, vous devez ouvrir une nouvelle ligne de commande dans le répertoire du projet et exécuter cette commande :

celery -A djangocelery worker -l info

puis ouvrir une nouvelle ligne de commande dans le chemin du projet et exécuter cette commande :

celery -A djangocelery flower

connexion de fleurs

Les détails peuvent ensuite être consultés en visitant http://localhost:5555/dashboard dans votre navigateur comme :

flower dashboard

flower tasks

flower task détails

De plus:

Vous pouvez supprimer toutes les tâches en attente avec:

celery -A proj purge

C’est tout. Faire.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.