Вопрос

У меня есть несколько скриптов, использующих pika.SelectConnection для связи с сервером RabbitMq.

Есть ли способ заставить эти скрипты автоматически переподключаться к серверу rmq в случае, если сервер вышел из строя, пока скрипт работает?

Это было полезно?

Решение

У меня есть много скриптов, которые используют следующий подход к повторному подключению:

родовое слово

Он не использует pika, а Kombu, тем не менее принципы могут быть применены.Метод drain_events - это ядро потребления сообщений, то есть он постоянно зацикливается на получении сообщений и выполнении обратного вызова для обработки сообщения.Как вы можете видеть здесь, у меня время ожидания библиотеки сокетов низкого уровня истекает каждые 25 секунд.В некоторых библиотеках мне пришлось исправить пару строк кода, чтобы это поведение работало без сбоев внутри модуля.

В любом случае пульс, отправляемый hb.beat, отслеживается процессом супервизора, и этот процесс завершит работу сценария, если за слишком короткий промежуток времени произойдет слишком много отказов.После закрытия скрипта супервизор перезапускает его.Это хорошо сработало при устранении периодических сетевых ошибок или перезапусков брокера MQ.Хотя я мог бы заставить свой скрипт выполнять переподключение, было проще убить и перезапустить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top