Я пытаюсь заставить свою программу, которая использует Pika, постоянно повторять попытки подключения к RabbitMQ в случае сбоя. Из того, что я видел в документах Pika, есть класс SimpleReconnectionStrategy, который можно использовать для этого, но, похоже, он работает не очень хорошо.
strategy = pika.SimpleReconnectionStrategy()
parameters = pika.ConnectionParameters(server)
self.connection = pika.AsyncoreConnection(parameters, True, strategy)
self.channel = self.connection.channel()
Соединение должно wait_for_open
и настроить стратегию повторного подключения.
Однако, когда я запускаю это, я получаю следующие ошибки:
error: uncaptured python exception, closing channel <pika.asyncore_adapter.RabbitDispatcher at 0xb6ba040c> (<class 'socket.error'>:[Errno 111] Connection refused [/usr/lib/python2.7/asyncore.py|read|79] [/usr/lib/python2.7/asyncore.py|handle_read_event|435] [/usr/lib/python2.7/asyncore.py|handle_connect_event|443])
error: uncaptured python exception, closing channel <pika.asyncore_adapter.RabbitDispatcher at 0xb6ba060c> (<class 'socket.error'>:[Errno 111] Connection refused [/usr/lib/python2.7/asyncore.py|read|79] [/usr/lib/python2.7/asyncore.py|handle_read_event|435] [/usr/lib/python2.7/asyncore.py|handle_connect_event|443])
Эти ошибки постоянно возникают, пока Pika пытается подключиться. Если я запустил сервер RabbitMQ во время работы моего клиента, он подключится. Мне просто не нравится вид этих ошибок ... Они нормальные? Я делаю это неправильно?