Closed Woxazu closed 2 years ago
По поводу первого: https://github.com/WhiteApfel/pyQiwiP2P/blob/master/pyqiwip2p/AioQiwip2p.py#L80
Всё адекватненько
Клиент создаётся один раз: при инициализации объекта AioQiwiP2P
или QiwiP2P
Можно использовать await p2p.client.aclose()
, если планируется использовать множество раз, конструкция async with
сделана для незабывания о закрытии и имеет право не использоваться
клянусь, это было после команды pip install...
по поводу второго, тогда это скорее не баг а enhancement от меня. вопросов больше не осталось
pip install...
Стабильная версия (stable, v1.0.1) не имеет асинхронного клиента.
Версия 2.* (master) с асинхронным клиентом находится в статусе ленивой разработки и является нестабильной. Для установки нестабильных (альфа, бета и прочие) версий используется команда
python -m pip install --pre -U pyqiwip2p
Актуальная на данный момент версия v2.0a14 (pypi) ошибки из первого пунта не содержит
__aexit__
вместоself.client.aclose()
стоитself.client.close()
, как будто клиент синхронный. Приводит к ошибке 'AsyncClient' object has no attribute 'close'. После замены я заметил другую ошибку:p2p = AioQiwiP2P(auth_key=qiwi_key)
и несколько async функций, внутри которых with, например:То при обращении к первой соответсвенно срабатывает with и триггерится aexit после окончания код блока, и это вроде логично. Но тогда при обращении ко второй функции из другого модуля этот клиент уже закрывается: RuntimeError: Cannot send a request, as the client has been closed. Если написать аналогичный код на httpx или другой асинк либе, то инициализированный клиент, очевидно, не умрет. Фиксится добавлением аргумента loop при инициализации, чтобы узнать в каком мы цикле и не убивать сущность. Да и в целом создавать клиент каждый раз при новом обращении против мануалов httpx из-за неэффективности