Це залежить від того, що ви хочете, щоб ваші завдання виконувались, чи потрібно вам їх розподіляти, і як ви хочете керувати ними.
Crontab може виконувати сценарій кожні N інтервалів. Він запускається, а потім повертається. По суті, ви отримуєте одне виконання кожного інтервалу. Ви можете просто направити crontab на виконання команди управління django і отримати доступ до всього середовища django, тому селера насправді вам там не допоможе.
Те, що селера приносить за стіл за допомогою черги повідомлень, - це розподілені завдання. Багато серверів можуть приєднатися до пулу працівників, і кожен отримує робочий предмет, не боячись подвійного обробки. Також можна виконати завдання, як тільки воно буде готове. З cron ви обмежуєтеся мінімум однією хвилиною.
Наприклад, уявіть, що ви щойно запустили нову веб-програму і отримуєте сотні реєстрацій, що вимагають надсилання електронного листа кожному користувачеві. Надсилання електронного листа може зайняти багато часу (порівняно), тому ви вирішите, що оброблятимете електронні листи з активацією за допомогою завдань.
Якщо ви використовували cron, вам потрібно було б переконатися, що кожну хвилину cron може обробляти всі електронні листи, які потрібно надіслати. Якщо у вас кілька серверів, вам тепер потрібно переконатися, що ви не надсилаєте кілька електронних листів про активацію одному користувачеві - вам потрібна якась синхронізація.
За допомогою селери ви додаєте завдання в чергу. У вас може бути кілька працівників на сервері, тож ви вже масштабувались перед cronjob. У вас також може бути кілька серверів, що дозволяють масштабувати ще більше. Синхронізація обробляється як частина "черги".
Ви можете використовувати селеру як заміну крону, але насправді це не основне його використання. Він використовується для розробки асинхронних завдань у розподіленому кластері.
І звичайно, селера має великий перелік функцій, яких крон немає.