La version 5.0 de Celery, le framework de programmation distribuée en Python, est disponible
avec une nouvelle implémentation CLI qui n'est pas complètement rétrocompatible

Celery est un framework de programmation distribuée simple, flexible et fiable pour traiter de grandes quantités de messages, tout en fournissant aux opérations les outils nécessaires pour maintenir un système distribué avec Python. Il s'agit d'une file d'attente de tâches qui se concentre sur le traitement en temps réel, tout en prenant en charge la planification des tâches. Celery 5.0 est une nouvelle version majeure, mais rétrocompatible avec les versions précédentes. Elle est officiellement supportée sur CPython 3.6, 3.7 et 3.8 et est également supportée sur PyPy3.

Qu'est-ce qu'une file d'attente de tâches ?

Les files d'attente de tâches sont utilisées comme un mécanisme permettant de distribuer le travail entre les threads ou les machines. L'entrée d'une file d'attente de tâches représente une unité de travail appelée tâche. Des processus dédiés aux travailleurs surveillent de façon permanente les files d'attente de tâches pour que de nouveaux travaux soient effectués. Selon la documentation du framework, Celery communique par l’intermédiaire de messages, notamment en utilisant un courtier pour servir de médiateur entre les clients et les travailleurs.


Afin de lancer une tâche, le client ajoute un message à la file d'attente, le courtier transmet ensuite ce message à un travailleur. Un système Celery peut être composé d’un grand nombre de travailleurs et courtiers, ce qui permet une grande disponibilité et une mise à l'échelle horizontale. Celery est écrit en Python, mais le protocole peut être implémenté dans un autre langage. En plus de Python, il y a “node-celery” et “node-celery-ts” pour Node.js, et un client PHP. La nouvelle version majeure, Celery 5.0, apporte quelques changements, dont en voici quelques-uns.

Changement dans le calendrier de livraison de nouvelles versions

L’équipe de développement de Celery a annoncé qu’à partir de maintenant, les utilisateurs doivent s'attendre à des versions majeures plus fréquentes, car elle va vite et casse des choses pour apporter une expérience encore meilleure. Elle a fait savoir que les versions de la branche 5.x porteront le nom de code des chansons de Jon Hopkins. Cette version a été baptisée Singularity. Celery 5.0 ne supporte plus Python 2.7.x, qui a atteint sa fin de vie depuis le 1er janvier 2020. Désormais, l’équipe ne supporte plus Python 3.6 et les versions les plus récentes et PyPy 3.0.

L’équipe a supprimé le support de Python 3.5, car cette version a atteint la fin de vie en septembre passé. Ainsi, elle informe que, si vous avez toujours besoin d'exécuter Celery avec Python 2.7 ou Python 3.5, il est possible de le faire avec Celery 4.x. Cependant, elle encourage à passer à une version Python prise en charge, car aucun autre correctif de sécurité ne sera appliqué pour Python 2.7 et, comme mentionné, Python 3.5 n'est pas pris en charge pour des raisons pratiques.

Celery 5.x n’est pas une version prise en charge à long terme

L’équipe a annoncé que Celery 5.x n'est pas une version LTS (Long Time Support). Elle entend la soutenir jusqu'à la sortie de Celery 6.x. Pour cela, et en attendant que vous passiez à la version 5.x, elle désigne Celery 4.x en tant que version LTS. Celery 4.x sera pris en charge jusqu'au 1er août 2021. « Nous accepterons et appliquerons des correctifs pour les corrections de bogues et les problèmes de sécurité. Mais, aucune nouvelle fonctionnalité ne sera fusionnée pour cette version », a-t-elle précisé.

Une nouvelle interface de la ligne de commande

Dans Celery 5.0, l'interface de la ligne de commande a été remaniée en utilisant Click. En conséquence, quelques modifications de rupture ont été introduites :

  • les options globales de Postfix comme “celery worker -app path.to.app” ou “celery worker -workdir/path/to/workdir” ne sont plus supportées. Vous devez les spécifier dans le cadre des options globales de la commande principale celery ;
  • “celery amqp” et “celery shell” nécessitent la sous-commande “repl” pour lancer un Shell. Vous pouvez maintenant aussi invoquer des commandes spécifiques sans Shell. Tapez “celery amqp -help” ou “celery shell -help” pour plus de détails.

D'autres changements depuis Celery 4.x

À partir de la version 5.0, Celery introduit une nouvelle implémentation CLI qui n'est pas complètement rétrocompatible. Les options globales ne peuvent plus être positionnées après la sous-commande. Elles doivent plutôt être positionnées comme une option pour la commande celery de la manière suivante : “celery --app path.to.app worker”. En outre, l’équipe recommande aussi de mettre à jour votre configuration avec les nouveaux noms de paramètres. Si vous ne l'avez pas fait lors de la migration vers Celery 4.0, elle vous conseille de le faire maintenant.

« Nous avons choisi de prolonger la période de déprédation jusqu'à la version 6.0, car nous n'avons pas mis en garde contre l'utilisation de ces paramètres dépréciés », a-t-elle déclaré. De plus, le backend de résultats de Couchbase utilise désormais le SDK V3 Couchbase. De ce fait, l'équipe a annoncé qu’elle ne supporte plus Couchbase Server 5.x. Par ailleurs, à partir de cette version, la version minimale requise pour le client de base de données est couchbase 3.0.0.

L’équipe espère que cette nouvelle version permettra de résoudre certains problèmes rencontrés par les utilisateurs avec les versions antérieures. En effet, certains retours par rapport aux versions précédentes indiquent que Celery n’était pas fiable et rencontrait des problèmes bizarres. Par exemple, certains affirment que Celery-Flower, utilisé pour surveiller les threads de Celery, n'est pas maintenu et cela est devenu un énorme problème, car il n’y a aucun moyen de suivre les problèmes. D’autres ont aussi dit avoir eu des problèmes en l’utilisant pour faire du crawling parallèle de plusieurs sites Web.

Sur ces points, Dramatiq serait meilleur que lui. Selon ceux qui l’utilisent, il possède toutes les caractéristiques importantes de Celery (enchaînement de méthodes asynchrones avec traitement des erreurs lorsqu'un maillon de la chaîne est défaillant) et offrirait une grande fiabilité. Il est également compatible avec Django. Toutefois, ces derniers ont déclaré que Dramatiq a été construit à partir du succès et des enseignements tirés de Celery.

Source : Celery 5.0

Et vous ?

Qu'en pensez-vous ?

Voir aussi

Apprendre à utiliser Pylint pour le langage Python en ligne de commande et sous Visual Studio Code, un tutoriel de Jennie Andersen et Mickael Baron

Python 3.9, la prochaine version du langage Python : construction des types génériques dans les collections standard et un analyseur PEG pour CPython

Microsoft dévoile en open source Pyright, un vérificateur de type statique pour le langage de programmation Python

L'EDI Python PyCharm 2020.1 est disponible et apporte des améliorations au contrôle de version Git, une installation Python plus fluide sur Windows et bien d'autres améliorations