Celery est une implémentation de file d’attente de tâches pour les applications web Python utilisées pour exécuter de manière asynchrone des travaux en dehors du cycle demande-réponse HTTP.

Celery est une implémentation du concept de file d’attente de tâches. Apprenez-en plus dans le chapitre sur le développement web ou consultez la table des matières pour tous les sujets.

Pourquoi Celery est-il utile?

Les files d’attente de tâches et l’implémentation de Celery en particulier sont l’une des parties les plus délicates à comprendre d’une pile d’applications web Python.

Si vous êtes un développeur junior, il peut être difficile de comprendre pourquoi il est important de déplacer le travail en dehors du cycle requête-réponse HTTP. En bref, vous voulez que votre serveur WSGI réponde aux demandes entrantes aussi rapidement que possible, car chaque demande immobilise un processus de travail jusqu’à ce que la réponse soit terminée. Déplacer le travail de ces travailleurs en faisant tourner des travaux asynchrones comme des tâches dans une file d’attente est un moyen direct d’améliorer les temps de réponse du serveur WSGI.

Quelle est la différence entre Celeryd et Celerybeat?

Celery peut être utilisé pour exécuter des travaux par lots en arrière-plan selon une planification régulière. Un concept clé de Celery est la différence entre le démon Celery (celeryd), qui exécute les tâches, et Celerybeat, qui est un ordonnanceur. Considérez Celeryd comme un ensemble d’un ou de plusieurs travailleurs qui s’occupent des tâches que vous leur confiez. Chaque travailleur exécutera une tâche et lorsque la tâche sera terminée, il prendra la suivante.Le cycle se répétera continuellement, n’attendant paresseusement que lorsqu’il n’y aura plus de tâches à mettre devant eux.

Celerybeat d’autre part est comme un patron qui garde la trace du moment où les tâches doivent être exécutées. Votre application peut indiquer à Celerybeat d’exécuter une tâche à intervalles de temps, par exemple toutes les 5 secondes ou une fois par semaine. Celerybeat peut également recevoir l’instruction d’exécuter des tâches à une date ou une heure spécifique, par exemple à 17 h 03 tous les dimanches. Lorsque l’intervalle ou l’heure spécifique est atteint, Celerybeat remettra le travail à Celeryd pour qu’il soit exécuté sur le prochain travailleur disponible.

Tutoriels et conseils Celery

Celery est un outil puissant qui peut être difficile à envelopper votre esprit au début. Assurez-vous de lire les concepts de file d’attente de tâchespuis plongez dans ces tutoriels Celery spécifiques.

  • A 4 Minute Intro to Celery est un court screencast d’introduction à la file d’attente de tâches.

  • Cette série de billets de blog sur l’architecture deCelery,Celery dans la nature : conseils et astuces pour exécuter des tâches asynchrones dans le monde réeletdealing with resource-consuming tasks on Celeryfournissent un excellent contexte sur le fonctionnement de Celery et sur la façon de gérer certains des bits les plus difficiles à travailler avec la file d’attente des tâches.

  • Comment utiliser Celery avec RabbitMQest un walkthrough détaillé pour utiliser ces outils sur un VPS Ubuntu.

  • Celery – Best Practicesexplique les choses que vous ne devriez pas faire avec Celery et montre certaines fonctionnalités sous-utilisées pour rendre les files d’attente de tâches plus faciles à travailler.

  • Celery – Meilleures pratiquesest un suivi de l’auteur différent du post sur les meilleures pratiques ci-dessus quibâtit sur certains de ses propres apprentissages de 3+ années d’utilisation de Celery.

  • Common Issues Using Celery (And Other Task Queues)contient de bons conseils sur les erreurs à éviter dans vos configurations de tâches,telles que l’utilisation des transactions de base de données et la relance des tâches échouées.

  • Traitement asynchrone dans les applications Web Partie 1et Partie 2sont de bonnes lectures pour comprendre la différence entre une file d’attente de tâches etpourquoi vous ne devriez pas utiliser votre base de données comme une file d’attente.

  • My Experiences With A Long-Running Celery-Based Microprocessgiving some good tips and advice based on experience with Celery workersthat take a long time to complete their jobs.

  • Liste de contrôle pour construire de superbes tâches asynchrones Celeryest un site spécialement conçu pour vous donner une liste de bonnes pratiques à suivre lors de la conception de votre configuration de file d’attente de tâches et de leur déploiement dans des environnements de développement, de staging et de production.

  • Heroku a écrit sur la façon de sécuriser Celeryquand les tâches sont autrement envoyées sur des réseaux non cryptés.

  • Tester unitairement les tâches Celeryexplique trois stratégies pour tester le code dans les fonctions que Celeryexécute. Le post conclut que l’appel des tâches Celery de manière synchrone pour les tester est la meilleure stratégie sans aucun inconvénient. Cependant, gardez à l’esprit que toute méthode de test qui ne correspond pas à la façon dont la fonction sera exécutée dans un environnement de production peut potentiellement conduire à des bogues négligés. Il existe également un dépôt Git open source avec l’ensemble du code source de ce post.

  • Surveillance Rollbar de Celery dans une application Djangoexplique comment utiliser Rollbar pour surveiller les tâches. Super utile lorsque les travailleurs meurent invariablement sans raison apparente.

  • 3 Gotchas for Working with Celerysont des choses à garder à l’esprit lorsque vous êtes nouveau dans l’implémentation de la file d’attente des tâches Celery.

  • Dask et Celerycomparaît Dask.distribué avec Celery pour les projets Python. Le post donne des exemples de code pour montrer comment exécuter des tâches avec l’une ou l’autre file d’attente de tâches.

  • Python+Celery : Chaîner les tâches… explique que les tâches Celery doivent dépendre les unes des autres en utilisant des chaînes Celery, et non des dépendances directes entre les tâches.

Celery avec les frameworks web

Celery est généralement utilisé avec un framework web tel queDjango, Flask ou Pyramid.Ces ressources vous montrent comment intégrer la file d’attente de tâches Celery avec le framework web de votre choix.

  • Comment utiliser Celery et RabbitMQ avec Djangoest un excellent tutoriel qui montre comment à la fois installer et configurer une tâche de base avec Django.

  • Miguel Grinberg a écrit un post sympa sur l’utilisation de la file d’attente de tâches Celery avec Flask.Il donne un aperçu de Celery suivi d’un code spécifique pour configurer la file d’attente de tâches et l’intégrer à Flask.

  • Mise en place d’une file d’attente de tâches asynchrones pour Django en utilisant Celery et Redisis un tutoriel simple pour mettre en place la file d’attente de tâches Celery pour les applications webDjango en utilisant le broker Redis sur le back-end.

  • A Guide to Sending Scheduled Reports Via Email Using Django And Celeryshows you how to usedjango-celeryin your application. Notez cependant qu’il existe d’autres façons d’intégrerCelery avec Django qui ne nécessitent pas la dépendance django-celery.

  • Flask tâches asynchrones en arrière-plan avec Celery et Rediscombine Celery avec Redis comme broker etFlask pour le framework de l’application d’exemple.

  • Celery et Django et Docker : Oh My!montre comment créer des tâches Celery pour Django au sein d’un Dockercontainer. Il fournit également quelques

  • Tâches asynchrones avec Django et Celerymontre comment intégrer Celery à Django et créer des tâches périodiques.

  • Démarrer la planification de tâches avec Celeryest un walkthrough détaillé pour configurer Celery avec Django (bien queCelery puisse également être utilisé sans problème avec d’autres frameworks).

  • Introducing Celery for Python+Djangoprovise une introduction à la file d’attente de tâches Celery avec Django comme frameworkintended pour construire une application web.

  • Asynchronous Tasks with Falcon and Celeryconfigure Celery avec le framework Falcon, qui est moins couramment utilisé dans les tutoriels web.

  • Custom Celery task statesest un post avancé sur la création d’états personnalisés, ce qui est particulièrement utile pour les états transitoires de votre application qui ne sont pas couverts par la configuration par défaut de Celery.

  • Tâches asynchrones avec Django et Celerys’intéresse à la façon de configurer Celery pour gérer les tâches à long terme dans une appDjango.

Ressources de déploiement de Celery

Celery et son broker s’exécutent séparément de vos serveurs web et WSGI, ce qui ajoute une certaine complexité à vos déploiements. Les ressources suivantes vous guident à travers la façon de gérer les déploiements et d’obtenir les bons paramètres de configuration en place.

  • La série « Django en production » parRob Golding contient un post spécifique sur les tâches d’arrière-plan.

  • Comment exécuter celery en tant que démon ? est un court post avec le code minimal pour exécuter le démon Celery etCelerybeat en tant que services système sur Linux.

  • Celery en production sur le blog du groupe Caktus contient des bonnes pratiques issues de leur expérience d’utilisation de Celery avec RabbitMQ, des outils de surveillance et d’autres aspects qui ne sont pas souvent abordés dans la documentation existante.

  • Trois conseils rapides de deux ans avec Celeryfournit quelques conseils solides sur les délais de réessai, le drapeau -Ofair et les délais d’exécution des tâches globales pour Celery.

admin

Laisser un commentaire

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

lg