RabbitMQ - одна из реализаций сервера для обмена сообщениями на базе протокола AMPQ(http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol, http://amqp.org/). Подробно описывать его работу, достоинства и недостатки я сейчас не буду. Цель этого поста - сравнить две библиотеки для работы с ним с помощью Python. На самом деле, этих библиотек значительно больше, краткий список их доступен на сайте RabbitMQ: http://www.rabbitmq.com/devtools.html#python-dev.
Сравнивал по принципу “нужно это, это и еще вооон то”. Детальное описание фич на сайте - ниже только те, которые были критичные для меня.
Pika - Python AMQP Client Library - изначально разрабатывалась для работы с RabbitMQ и предоставляет собой реализацию протокола AMQP 0-9-1, в следствии чего, все примеры работы с RabbitMQ на Python в официальной документации написаны с использованием этой библиотеки.
Kombu известна тем, кто работал с OpenStack.
Небольшая сравнительная таблица с комментариями:
В целом, после незначительного использования обоих библиотек (читать как “написал “hello world”” и чтения документации пришел к таким выводам:
- для простых задач pika предпочтительнее, уровень вхождения ниже;
- kombu имеет больше всевозможных настроек и легче поддается расширению;
- производительность обоих библиотек на очереди до 100 сообщений была примерно одинакова.
Небольшой пример кода: https://github.com/e0ne/BlogSamples/tree/master/rabbitmq-sample
P.S. Хочется посмотреть еще celery и py-ampqlib, но пока до них руки не дошли.
P.S.S. Комментарии, замечания и дополнения приветствуются.