Зачем использовать сельдерей вместо RabbitMQ? - PullRequest
58 голосов
/ 31 января 2012

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

Ответы [ 2 ]

50 голосов
/ 15 февраля 2012

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

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

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

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

29 голосов
/ 31 января 2012

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

...