Я пытаюсь написать приложение Python, использующее RabbitMQ, с помощью библиотеки Pika. Я использую последнюю версию 0.9.5. Моя проблема в том, что мой код Python не может определить, когда его имя пользователя и пароль RabbitMQ неверны, потому что я не могу понять, как зарегистрировать обратный вызов Pika, который сообщит мне об ошибке. Мой код устанавливает такое соединение:
import pika
class MyClient(object):
def __init__(self, host, username, password):
self.host = host
self.username = username
self.password = password
self.connection = None
def connect(self):
credentials = pika.PlainCredentials(self.username, self.password)
parameters = pika.ConnectionParameters(
host=self.host, credentials=credentials, heartbeat=True,
)
self.connection = pika.SelectConnection(
parameters, self.on_connected,
)
self.connection.add_on_close_callback(self.on_close)
self.connection.ioloop.start()
def on_connected(self, *args, **kw):
print 'I am connected!', args, kw
def on_close(self, *args, **kw):
print 'I am closed!', args, kw
my_client = MyClient('...', '...', '...')
my_client.connect()
# (Good, I remembered to remove the username and password
# before pasting to Stack Overflow!)
Если я запустил этот сценарий, ioloop
будет работать чуть больше трех секунд, а затем программа завершится. Я не могу понять, как зарегистрировать обратный вызов или даже просто проверить состояние неработающего соединения, чтобы определить, что произошла ошибка, или конкретно выяснить, что это ошибка неверного пароля. Я пропустил что-то важное в документации Pika?
Может ли кто-нибудь помочь мне понять, как должна работать обработка ошибок Pika 0.9.5? Или 0.9.5 - это какой-то ужасный эксперимент, которого мне следует избегать, используя вместо этого более раннюю версию Pika, теперь, когда я заметил это сообщение электронной почты, которое, кажется, указывает на то, что эта новая линия разработки зашла в тупик?
Спасибо за любую помощь!