Ответ 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!
Ура!