AsyncIO, aio_pika проблемы с блоком try-except
Делаю healthcheck ендпоинт. Нужно проверить доступность rabbitMQ.
async def rmq_connection(self, url: str):
"""
Проверяет подключение к указанному RabbitMQ.
:param url: Адрес подключения к RabbitMQ.
:returns: статус подключения - получилось подключиться или нет.
"""
urls_map: Dict[str, str] = {
common_settings.facade_broker_url: "rmq_connection",
common_settings.vector_broker_url: "vector_connection",
}
is_success_connection = False
try:
connection: Type[
aio_pika.connection.Connection
] = await aio_pika.connect(url, timeout=1)
is_success_connection = not connection.is_closed
except ConnectionError:
logger.error(f"Ошибка подключения к {urls_map[url]}")
else:
await connection.close() # type: ignore
finally:
return urls_map[url], is_success_connection
Проблема в том, что выполнение этой функции после части ниже уходит сразу в блок finally, и строка is_success_connection = not connection.is_closed не выполняется, как и блоки except/else.
connection: Type[
aio_pika.connection.Connection
] = await aio_pika.connect(url, timeout=1)
Соотвественно, мой ендпоинт постоянно отвечает, что rabbitMQ не работает, в чем может быть проблема?