Насколько я понимаю, Celery - это распределенная очередь задач, что означает, что единственное, что он должен делать, - это отправлять задачи / задания на другие серверы и возвращать результат. RabbitMQ - это очередь сообщений и не более того. Однако рабочий может просто прослушать MQ и выполнить задачу при получении сообщения. Это именно то, что предлагает сельдерей, так зачем вообще нужен сельдерей?
Зачем использовать Celery вместо RabbitMQ?
Ответы (2)
Вы правы, сельдерей вам совсем не нужен. Когда вы разрабатываете распределенную систему, есть много вариантов, и нет правильного способа делать что-то, подходящее для всех ситуаций.
Многие люди считают, что более гибко иметь пулы потребителей сообщений, ожидающих появления сообщения в их очереди, выполняющих некоторую работу и отправляющих сообщение, когда работа завершена.
Celery - это фреймворк, который объединяет множество вещей в пакет, но если вам действительно не нужен весь пакет, то лучше настроить RabbitMQ и реализовать только то, что вам нужно, без всяких сложностей. Кроме того, RabbitMQ можно использовать во многих других сценариях помимо сценария очереди задач, который реализует Celery.
Но если вы все же выберете Celery, подумайте дважды о RabbitMQ. Модель очереди сообщений Celery упрощена и действительно больше подходит для чего-то вроде Redis, чем для RabbitMQ. У кролика есть богатый набор опций, которые сельдерей в основном игнорирует.
Celery в основном предоставляет приятный интерфейс для выполнения того, что вы сказали, и выполняет всю настройку за вас. Да, вы могли бы сделать это вручную, но вы бы просто переписали сельдерей.