TechTalk#14 – Celery

 

TechTalk #14

Celery

 

Ce techtalk va mettre en lumière la librairie Celeryqui est par définition : une file de tâches asynchrone basées sur un système de passage de messages distribués. Celery est maintenant indépendant et ne nécessite plus forcément l’utilisation de Django.

La file “queue” de tache est utilisée pour distribuer du travail de manière non-bloquante. Toutes les entrées dans cette file sont appelées tâche “task”. Les “worker” permettent de monitorer les queues afin de récupérer les tâches à effectuer.

Il est possible avec Celery de répéter ou de planifier des tâches.

Voici quelques cas d’utilisation :

  • Notifier des utilisateurs en background (email, notification push, …)
  • Générer des PDF
  • Communiquer avec des API externes
  • Lancer des tâches de nettoyage de base de données / logs

Le brokerest la partie centrale, il est l’intermédiaire entre les consumers (ceux qui traitent les messages) et les producers (ceux qui envoient les messages). Il peut répondre à tout instant à la question suivante : “Que reste-t-il à faire ?”. Pour cela, il stocke les queues et leurs tasks associées.

Celery communique à travers des messages. Les messages transitent via des “broker”. Les workers récupèrent les messages et les traitent. Les résultats sont ensuite envoyés au backend de résultat.

Il est possible d’avoir plusieurs broker ainsi que plusieurs worker.

 Dans nos cas d’usage, nous utilisons 2 types de broker :

  • RabbitMQ (persistent queue, haute disponibilité)
  • Redis

Nous verrons quelques configurationsavancer des différents composants de Celery.

Nous verrons l’intégration de Celery dans Django, ainsi que dans les tests unitaires Django. Nous vous donnerons plusieurs conseils et bonnes pratiques.

Exemple d’architecture :

ripplemotion-agence-digitale-techtalk14

TechTalk animé par Olivier Tabone | Co-fondateur Directeur Technique chez Ripple Motion