This commit is contained in:
2023-05-20 20:38:57 +02:00
parent a7797b6405
commit 2e05cc4b67

View File

@@ -1,5 +1,3 @@
from contextlib import asynccontextmanager
from fastapi import FastAPI from fastapi import FastAPI
from fastapi.responses import ORJSONResponse from fastapi.responses import ORJSONResponse
@@ -12,33 +10,32 @@ from core.db import database
from core.taskiq_worker import broker from core.taskiq_worker import broker
@asynccontextmanager
async def lifespan(app: FastAPI):
if not database.is_connected:
await database.connect()
if not broker.is_worker_process:
await broker.startup()
yield
if database.is_connected:
await database.disconnect()
if not broker.is_worker_process:
await broker.shutdown()
await app.state.redis_pool.disconnect()
def start_app() -> FastAPI: def start_app() -> FastAPI:
app = FastAPI(default_response_class=ORJSONResponse, lifespan=lifespan) app = FastAPI(default_response_class=ORJSONResponse)
app.state.redis_pool = ConnectionPool.from_url(REDIS_URL) app.state.redis_pool = ConnectionPool.from_url(REDIS_URL)
app.include_router(router) app.include_router(router)
app.include_router(healthcheck_router) app.include_router(healthcheck_router)
@app.on_event("startup")
async def app_startup():
if not database.is_connected:
await database.connect()
if not broker.is_worker_process:
await broker.startup()
@app.on_event("shutdown")
async def app_shutdown():
if database.is_connected:
await database.disconnect()
if not broker.is_worker_process:
await broker.shutdown()
await app.state.redis_pool.disconnect()
Instrumentator( Instrumentator(
should_ignore_untemplated=True, should_ignore_untemplated=True,
excluded_handlers=["/docs", "/metrics", "/healthcheck"], excluded_handlers=["/docs", "/metrics", "/healthcheck"],