GPQBot

Форк
0
/
main.py 
49 строк · 1.2 Кб
1
from functools import partial
2

3
from fastapi import FastAPI
4
from pybotx import Bot
5

6
from db.sqlalchemy import build_db_session_factory
7
from api.dependencies.bot import get_bot
8
from api.routers import router
9
from app.settings import settings
10
from app.caching import RedisRepo
11
from app.resources import strings
12

13
async def startup(bot: Bot) -> None:
14
    # -- Bot --
15
    await bot.startup()
16

17
    # -- Database --
18
    bot.state.db_session_factory = await build_db_session_factory()
19

20
    # -- Redis --
21
    bot.state.redis_repo = await RedisRepo.init(
22
        dsn=settings.REDIS_DSN, prefix=strings.BOT_PROJECT_NAME
23
    )
24

25

26
async def shutdown(bot: Bot) -> None:
27
    # -- Bot --
28
    await bot.shutdown()
29

30
    # -- Redis --
31
    await bot.state.redis_repo.close()
32

33

34
def get_application() -> FastAPI:
35
    """Create configured server application instance."""
36
    bot = get_bot()
37

38
    application = FastAPI(title=strings.BOT_PROJECT_NAME)
39
    application.state.bot = bot
40

41
    application.add_event_handler("startup", partial(startup, bot))
42
    application.add_event_handler("shutdown", partial(shutdown, bot))
43

44
    application.include_router(router)
45

46
    return application
47

48

49
app = get_application()

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.