простенький web-server. При чтении документации увидел возможность хранить глобальные переменные в Application.
При изменении переменных выскакивает ошибка:
DeprecationWarning: Changing state of started or joined application is deprecated
Есть ли те, кто может подсказать что можно в этой ситуации сделать? (P.S: Могу забить, ибо все и так работает, но хотелось бы узнать все-таки вариант, который будет считаться правильным решением)
зачем ты пытаешься хранить глобальные переменные?
Связь с БД + хранение Клиентской сессии, ибо иногда надо обработать свой запрос и послать в другую часть планеты
а как ты открываешь соединение с БД ?
Какой там сайт, чтоб свой код залить? Pastebin же?
https://pastebin.com/aNfd4r2y
Исходя из доки, можно получить app из request'a на сервер. А из app уже получить нужные переменные
вообще страннно и по идее этот код не должен бы выдавать эту ошибку. вот тут похоже релевантное обсуждение этой проблемы https://github.com/aio-libs/aiohttp/issues/4326
Да, читал ее, но на всякий случай спросил в чате. Может есть какое-то другое решение, которое я просто не вижу. Спасибо за помощь, тогда забью на нее просто
а если создавать как они предлагают в cleanup context, то предупреждение тоже выбрасывается? https://docs.aiohttp.org/en/stable/web_advanced.html#cleanup-context
Пока не пробовал. Но у меня не с БД проблема, а с ClientSession
что такое ClientSession и где конкретно вываливается это предупреждение?
ClientSession - сессия, которая должна отправлять запросы на другой сервер. В доке написано, что идеальный вариант такой: async with ClientSession() as session: #code here Но у них еще написано, что лучше не создавать каждый раз новую сессию для одного запроса. К сожалению, у меня будет выходить один запрос на сессию. Вываливается предупреждение тут: if request.app.get('client').closed: request.app['client'] = ClientSession()
а, это aiohttp-шная сессия. if request.app.get('client').closed: request.app['client'] = ClientSession() так, а где ты этот код вызываешь?
https://pastebin.com/nFDzEm7x
так а зачем этот код вообще нужен?
Обсуждают сегодня