Подтвердить что ты не робот

Какую форму подключения использовать с пикой

Я пытался выяснить, какую форму связи я должен использовать при использовании pika, у меня есть две альтернативы, насколько я понимаю.

Либо BlockingConnection, либо SelectConnection, однако я не уверен в различиях между этими двумя (например, блокировка BlockingConnection и т.д.)

В документации для pika говорится, что SelectConnection является предпочтительным способом подключения к кролику, поскольку он предоставляет "несколько методов уведомления о событиях, включая select, epoll, kqueue и poll".

Итак, мне интересно, каковы последствия этих двух разных типов соединений?

PS: Я знаю, что я не должен помещать тег в заголовок, но в этом случае я думаю, что это помогает прояснить вопрос.

4b9b3361

Ответ 1

SelectConnection полезна, если ваша архитектура приложения может извлечь выгоду из асинхронного проектирования, например. делая что-то еще, пока RabbitMQ IO завершает (например, переключается на другой IO и т.д.). Этот тип соединения использует обратные вызовы для указания возврата функций. Например, вы можете объявлять обратные вызовы для

on_connected, on_channel_open, on_exchange_declared, on_queue_declared и т.д.

... выполнять операции при срабатывании этих событий.

Преимущество особенно хорошо, если ваш сервер RabbitMQ (или соединение с этим сервером) работает медленно или перегружен.

BlockingConnection на руке - это просто: он блокируется до тех пор, пока вызываемая функция не вернется. поэтому он блокирует поток выполнения до тех пор, пока не будет подключен канал или channel_open или exchange_declared или queue_declared. Тем не менее, его часто проще программировать подобную сериализованную логику, чем логика асинхронного выбора. Для простых приложений с гибкими серверами RabbitMQ они также работают в режиме OK IMO.

Я полагаю, что вы уже читали документацию Pika http://pika.github.com/connecting.html, если это не так, тогда это абсолютно важная информация, прежде чем вы будете использовать Pika!

Ура!