yt-dlp-bot/api/core/app.py
Taras Terletskyi 773eddffcd Initial
2022-03-09 23:17:37 +02:00

38 lines
1.1 KiB
Python

import aioredis
from fastapi import FastAPI
from fastapi.middleware.gzip import GZipMiddleware
from fastapi_cache import FastAPICache
from fastapi_cache.backends.redis import RedisBackend
from api.api_v1.urls import v1_router
from api.root.endpoints.healthcheck import healthcheck_router
from core.constants import GZIP_MIN_SIZE
from yt_shared.rabbit import get_rabbitmq
def create_app() -> FastAPI:
app_ = FastAPI(
title='YT DLP BOT API',
description='API for your downloaded videos',
debug=True,
)
app_.include_router(healthcheck_router)
app_.include_router(v1_router)
app_.add_middleware(GZipMiddleware, minimum_size=GZIP_MIN_SIZE)
return app_
app = create_app()
@app.on_event('startup')
async def startup_event():
redis = aioredis.from_url('redis://yt_redis', encoding='utf8',
decode_responses=True)
FastAPICache.init(RedisBackend(redis), prefix='fastapi-cache')
await get_rabbitmq().register()
@app.on_event('shutdown')
async def shutdown_event():
await get_rabbitmq().close()