Я пытаюсь написать приложение на 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 0.9.5? Или 0.9.5 - это своего рода ужасный эксперимент, которого мне следует избегать, используя вместо этого более раннюю версию Pika, теперь, когда я заметил это электронное письмо , которое, кажется, указывает на то, что эта новая линия разработки стала тупик?
Спасибо за любую помощь!