Когда вызывать connection.close() при работе с телеграм ботом

Файл main.py моего бота выглядит так:

import asyncio
from aiogram                import Bot, Dispatcher
from aiogram.client.default import DefaultBotProperties
from aiogram.enums          import ParseMode
from config_data.config     import Config, load_config
from handlers import main_handlers
from database      import db


async def main() -> None:
    config: Config = load_config()

    default_properties = DefaultBotProperties(parse_mode=ParseMode.HTML)

    bot = Bot(token=config.tg_bot.token, default=default_properties)
    dp = Dispatcher()

    dp.include_router(main_handlers.router)

    db.create_tables()
    await bot.delete_webhook(drop_pending_updates=True)  # delete updates
    await dp.start_polling(bot)


if __name__ == '__main__':
    asyncio.run(main())

Так же в файле database.py у меня объявлен класс DBManager для работы с базой данных:

class DBManager:
    def __init__(self, database_file):
        self.database_file = database_file
        self.connection = sqlite3.connect(database_file)
        self.cursor = self.connection.cursor()
        
    def create_tables(self):
        # ...

    def close(self):
        self.connection.close()

и, как несложно догадаться:

db = DBManager('tg.db')

Бот постоянно запущен, но конечно далеко не всегда все работает идеально, хотелось бы чтобы при возникновении ошибки, когда бот "падал", так же закрывалось соединение с базой данных. Да и вообще когда я самостоятельно останавливаю работу бота. Но я не понимаю где лучше всего расположить вызов close(), по крайней мере сильно не меняя файл database.py


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