Можете ли вы порекомендовать, какую библиотеку Python использовать для доступа к AMQP (RabbitMQ)? Из моих исследований pika
кажется предпочтительным.
Хорошая библиотека Python для AMQP [закрыта]
Ответы (4)
Pika является рекомендуемой библиотекой RabbitMQ, и также упоминается py-ampqlib. В зависимости от того, для чего вы используете Rabbit, вам также может понадобиться Celery (клиентская библиотека, предназначенная для распределенной организации очередей). ).
Опять же, в зависимости от использования, вы также можете посмотреть Apache qpid, который является полным клиентом на основе AMPQ. серверная альтернатива RabbitMQ. Одна вещь, которая привлекла нас в qpid, заключалась в том, что он, казалось, имел лучшую устойчивость к сбоям сервера (очереди сохраняются распределенным образом).
Мои собственные исследования привели меня к выводу, что правильной библиотекой для использования будет Kombu, так как это также то, что Celery (упомянутый @SteveMc) перешел на. Я также использую RabbitMQ и успешно использовал Kombu с бэкэндом amqplib по умолчанию.
Kombu также поддерживает другие транспорты за тем же API. Полезно, если вам нужно заменить AMQP или добавить что-то вроде Redis. Хотя не пробовал.
Примечание: Kombu в настоящее время не поддерживает последнюю версию pika (если вы по какой-то причине полагаетесь на нее). В настоящее время поддерживается только 5.2.0, это меня укусило некоторое время назад.
Просмотрев все эти библиотеки, я теперь убежден, что правильный ответ — ни одна из них. Вместо этого создайте слой абстракции как прокладку для любой библиотеки, которую вы выберете, потому что вы неизбежно столкнетесь с ситуацией, когда вам придется менять библиотеки.
Но помните, что если вы придерживаетесь одной и той же версии протокола AMQP, эти библиотеки будут взаимодействовать. Из-за того, что тестировались разные библиотеки, у нас были части прототипа приложения, работающего с pika, kombu и py-amqplib.
Прочитайте этот блог о замене amqplib на pika для понимания, почему это хорошая идея.
В настоящее время я занимаюсь тем, чтобы наше приложение Python использовало SSL. Я изначально не разрабатывал это приложение (и я не являюсь разработчиком Python), поэтому я мало что о нем знаю, но, похоже, мы используем Клиент AMQP в Twisted.
QPid также имеет один. Опять же, я не знаю качество.