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