0

Почему выполнение запланированных задач с использованием Celery предпочтительнее, чем crontab?

2

Учитывая, что Celery уже является частью стековой архитектуры для запуска очередей задач (т.е. он не добавляется просто для выполнения cron-задач, что, на мой взгляд, является излишним), меня интересует следующее:

Какие преимущества может дать функция "периодических задач" в Celery в качестве замены crontab? Я ищу информацию по следующим пунктам:

  • Основные плюсы и минусы по сравнению с crontab
  • Сценарии использования, в которых Celery является более предпочтительным выбором, чем crontab
  • Специфический случай для Django: Celery против crontab для запуска периодических задач, если Celery уже включен в стек как django-celery для очереди задач Django.

2 ответ(ов)

0

Я использовал cron для своего производственного сайта, но в текущем проекте перешел на Celery. Я гораздо больше предпочитаю Celery, чем cron, вот почему:

  • Celery в сочетании с Celerybeat обеспечивает более тонкую настройку, чем cron. Cron не может запускаться чаще чем раз в минуту, в то время как Celery может (у меня есть задача, которая выполняется каждые 90 секунд и проверяет очередь электронной почты для отправки сообщений, а также другая, которая очищает список онлайн-пользователей).
  • В строке cron необходимо вызывать скрипт или уникальную команду с абсолютным путем и информацией о пользователе. Celery вызывает функции Python, не нужно писать больше, чем код.
  • С Celery для развертывания на другом компьютере, как правило, нужно просто скопировать ваш код, который обычно находится в одном месте. Развертывание с помощью cron потребует больше усилий (вы можете автоматизировать это, но…).
  • Я действительно считаю, что Celery лучше подходит для рутинной очистки (кэш, база данных) и, в общем, для коротких задач. Создание дампа базы данных больше подходит для cron, так как вы не хотите загромождать очередь событий слишком долгими задачами.
  • Не менее важно, что Celery легко распределяется между машинами.
0

Celery следует использовать в тех случаях, когда необходимо координировать задания на нескольких машинах, гарантировать выполнение задач даже при добавлении или удалении машин из рабочей группы, устанавливать время истечения для задач, определять многоступенчатые задачи с зависимостями в стиле графа, а не линейными зависимостями, или когда нужно иметь единое хранилище логики планирования, которое будет одинаково работать на разных операционных системах и версиях.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь