Masynchin / CheWeatherBot

Telegram-bot для погоды Череповца
https://t.me/weather35bot
7 stars 1 forks source link

Использовать ресурсы #25

Closed Masynchin closed 1 year ago

Masynchin commented 1 year ago

В чём проблема?

Сервисы (в частности, БД подписчиков и API погоды) создают ресурсы при каждом запросе:

https://github.com/Masynchin/CheWeatherBot/blob/df8ac222cffa9b2f3f9fb7690e5856b4b7b9b586/app/db.py#L31-L36

https://github.com/Masynchin/CheWeatherBot/blob/df8ac222cffa9b2f3f9fb7690e5856b4b7b9b586/app/weather.py#L104-L110

Решение?

Аллоцировать ресурсы в main один раз, и единожды передавать их в сервисы, примерно так:

async def main():
    async with db.connect(...) as conn, aiohttp.ClientSession(...) as session:
        subs = Subscribers(conn)
        weather = OwmWeather(session)