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 не работает, в чем может быть проблема?


Ответы (0 шт):