Распределенные очереди задач (напр. Сельдерей) vs crontab скрипты
У меня возникли проблемы с пониманием цели "распределенных очередей задач". Например, в Python сельдерей библиотека.
Я знаю, что в celery, структуре python, вы можете установить временные окна для выполнения функций. Однако это также можно легко сделать в linux crontab, направленном на скрипт python.
и насколько я знаю, и показано из моих собственных django-celery webapps, сельдерей потребляет гораздо больше оперативной памяти, чем просто настройка raw список задач. Разница в несколько сотен МБ для относительно небольшого приложения.
может кто-нибудь, пожалуйста, помогите мне с этим различием? Возможно, было бы неплохо также объяснить на высоком уровне, как работают очереди задач / crontabs в целом.
спасибо.
1 ответ:
Это зависит от того, что вы хотите, чтобы ваши задачи, чтобы делать, если вам нужно распространять их, и как вы хотите управлять ими.
crontab способен выполнять скрипт каждые N интервалов. Он запускается, а затем возвращается. По сути вы получаете одно выполнение каждого интервала. Вы можете просто направить crontab для выполнения команды управления django и получить доступ ко всей среде django, поэтому сельдерей действительно не поможет вам там.
что сельдерей приносит к столу, с помощью очереди сообщений происходит распределение задач. Многие серверы могут присоединиться к пулу работников и каждый получит рабочий элемент, не опасаясь двойной обработки. Также можно выполнить задачу, как только она будет готова. С cron вы ограничены как минимум одной минутой.
например, представьте, что вы только что запустили новое веб-приложение и получаете сотни подписок, которые требуют отправки электронной почты каждому пользователю. Отправка электронной почты может занять много времени (сравнительно) таким образом, вы решаете, что вы будете обрабатывать электронные письма активации с помощью задач.
Если вы использовали cron, вам нужно будет убедиться, что каждую минуту cron может обрабатывать все электронные письма, которые необходимо отправить. Если у вас есть несколько серверов, теперь вы должны убедиться, что вы не отправляете несколько писем активации и тому же пользователю - вам нужна какая-то синхронизация.
с сельдереем вы добавляете задачу в очередь. У вас может быть несколько рабочих на сервере, поэтому вы уже масштабируется вперед, в процентах. Вы также можете иметь несколько серверов, позволяя еще больше. Синхронизация обрабатывается как часть "очереди".
вы можете использовать сельдерей в качестве замены cron, но это не его основное применение. Он используется для обработки асинхронных задач в распределенном кластере.
и конечно, сельдерей имеет большой список функций что cron не делает.
Comments