Зачем использовать Celery вместо RabbitMQ?

Насколько я понимаю, Celery - это распределенная очередь задач, что означает, что единственное, что он должен делать, - это отправлять задачи / задания на другие серверы и возвращать результат. RabbitMQ - это очередь сообщений и не более того. Однако рабочий может просто прослушать MQ и выполнить задачу при получении сообщения. Это именно то, что предлагает сельдерей, так зачем вообще нужен сельдерей?


person Kar    schedule 31.01.2012    source источник


Ответы (2)


Вы правы, сельдерей вам совсем не нужен. Когда вы разрабатываете распределенную систему, есть много вариантов, и нет правильного способа делать что-то, подходящее для всех ситуаций.

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

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

Но если вы все же выберете Celery, подумайте дважды о RabbitMQ. Модель очереди сообщений Celery упрощена и действительно больше подходит для чего-то вроде Redis, чем для RabbitMQ. У кролика есть богатый набор опций, которые сельдерей в основном игнорирует.

person Michael Dillon    schedule 15.02.2012
comment
У кролика есть богатый набор опций, которые сельдерей в основном игнорирует. Это правда, но немного вводит в заблуждение. Например, вы можете настроить правила маршрутизации на уровне Rabbit, которые не контролируются Celery, но влияют на маршрутизацию и потребление задач Celery. Это проблема дизайна, хотите ли вы, чтобы маршрутизация выполнялась вызывающим абонентом, настраиваемым маршрутизатором Celery или механизмом обмена. Это правда, что эти конфигурации Rabbit могут быть невидимы для Celery, но это не значит, что они не имеют полезного эффекта. - person Chris Johnson; 26.08.2013

Celery в основном предоставляет приятный интерфейс для выполнения того, что вы сказали, и выполняет всю настройку за вас. Да, вы могли бы сделать это вручную, но вы бы просто переписали сельдерей.

person mjtamlyn    schedule 31.01.2012
comment
Также есть элемент операций. Огромные части Celery предназначены для обеспечения надежности (например, отсутствие сбоев при сериализации определенного исключения и т. Д.), А также для управления рабочими процессами и кластерами рабочих. - person asksol; 31.01.2012