web-dev-qa-db-fra.com

Pourquoi l'exécution de tâches planifiées avec Celery serait-elle préférable à crontab?

Considérant que le céleri fait déjà partie de la pile pour exécuter les files d'attente de tâches (c'est-à-dire qu'il n'est pas ajouté uniquement pour l'exécution de crons, cela semble une exagération à mon humble avis).

Comment sa fonction "tâches périodiques" peut-elle être utile en remplacement de crontab? Recherchez spécifiquement les points suivants.

  • Avantages/inconvénients majeurs par rapport à Crontab
  • Cas d'utilisation où le céleri est un meilleur choix que crontab
  • Cas d'utilisation spécifique à Django: Celery vs crontab pour exécuter Django basé sur des tâches périodiques, lorsque le céleri a été inclus dans la pile en tant que Django-celery pour queing Django tâches.
42
DhruvPathak

J'utilise cron pour un site Web de production et je suis passé au céleri sur un projet en cours. Je suis beaucoup plus dans le céleri que dans le cron, voici pourquoi:

  • Le céleri + le céleri ont une granularité plus fine que le cron. Cron ne peut pas s'exécuter plus d'une fois par minute, tandis que le céleri peut (j'ai une tâche exécutée toutes les 90 secondes qui vérifie une file d'attente de courrier électronique pour envoyer des messages, et une autre qui nettoie la liste des utilisateurs en ligne).
  • Une ligne cron doit appeler un script ou une commande unique, avec un chemin absolu et des informations utilisateur. Céleri appelle python, pas besoin d'écrire plus que du code.
  • Avec le céleri, pour déployer sur une autre machine, vous n'avez généralement qu'à extraire/copier votre code, qui est généralement au même endroit. Le déploiement avec cron nécessiterait plus de travail (vous pouvez l'automatiser mais ...)
  • Je trouve vraiment le céleri mieux adapté que le cron pour le nettoyage de routine (cache, base de données), et en général, pour les tâches courtes. Le vidage d'une base de données est cependant plus un travail pour cron, car vous ne voulez pas encombrer la file d'attente d'événements avec des tâches trop longues.
  • Pas le moindre, le céleri est facilement distribué sur les machines.
40
Steve K

Le céleri est indiqué chaque fois que vous avez besoin de coordonner des travaux sur plusieurs machines, de garantir que les travaux s'exécutent même lorsque des machines sont ajoutées ou supprimées d'un groupe de travail, ont la possibilité de définir des délais d'expiration pour les travaux, de définir des travaux en plusieurs étapes avec un style graphique plutôt que linéaire un flux de dépendance ou un référentiel unique de logique de planification qui fonctionne de la même manière sur plusieurs systèmes d'exploitation et versions.

3
Chris Johnson