Это зависит от того, что вы хотите, чтобы ваши задачи выполнялись, нужно ли вам их распределять и как вы хотите ими управлять.
Crontab может выполнять сценарий каждые N интервалов. Он бежит, а потом возвращается. По сути, вы получаете одно выполнение на каждом интервале. Вы можете просто указать crontab для выполнения команды управления django и получить доступ ко всей среде django, так что сельдерей вам здесь не поможет.
Что сельдерей приносит на стол, с помощью очереди сообщений распределяются задачи. Многие серверы могут присоединиться к пулу рабочих, и каждый получает рабочий элемент, не опасаясь двойной обработки. Также возможно выполнить задачу, как только она будет готова. С cron вы ограничены минимум одной минутой.
В качестве примера представьте, что вы только что запустили новое веб-приложение и получаете сотни регистраций, которые требуют отправки электронного письма каждому пользователю. Отправка электронного письма может занять много времени (сравнительно), поэтому вы решаете, что будете обрабатывать письма активации через задачи.
Если вы использовали cron, вам нужно было убедиться, что cron каждую минуту может обрабатывать все письма, которые необходимо отправить. Если у вас несколько серверов, вам теперь нужно убедиться, что вы не отправляете несколько писем активации одному и тому же пользователю - вам нужна какая-то синхронизация.
С сельдереем вы добавляете задачу в очередь. У вас может быть несколько воркеров на сервер, так что вы уже выполнили масштабирование раньше, чем cronjob. У вас также может быть несколько серверов, что позволит вам масштабироваться еще больше. Синхронизация выполняется как часть «очереди».
Вы можете использовать сельдерей в качестве замены cron, но на самом деле это не его основное применение. Он используется для распределения асинхронных задач в распределенном кластере.
И, конечно же, у сельдерея есть большой список функций , которых нет в cron.