🍃 Lifespan

Raito позволяет описать асинхронную логику запуска и остановки декоратором @rt.lifespan(router), прямо как в FastAPI.


Пример

from typing import AsyncGenerator

from aiogram import Bot, Router
from raito import rt, Raito

router = Router(name="lifespan")

@rt.lifespan(router)
async def lifespan_fn(raito: Raito, bot: Bot):
    bot_info = await bot.get_me()
    rt.log.info("🚀 Launching bot : [@%s] %s", bot_info.username, bot_info.full_name)

    rt.debug("Registering commands...")
    await raito.register_commands(bot)

    yield

    rt.log.info("👋 Bye!")

Как это работает

  • код до yield выполняется при запуске

  • код после yield выполняется при остановке

  • lifespan’ы отслеживаются по bot.id и на выходе выполняются в обратном порядке