refactor: cleaned main file

This commit is contained in:
2025-10-31 11:29:24 +04:00
parent 36b3e056dc
commit ef657c4939
8 changed files with 84 additions and 53 deletions

68
main.py
View File

@ -1,64 +1,28 @@
import contextlib
import taskiq_fastapi
from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.middleware.gzip import GZipMiddleware
from fastapi.responses import ORJSONResponse
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from starlette.responses import JSONResponse
import routers
from core import lifespan, settings, register_middlewares, register_exception_handlers
from task_management import broker
from utils.auto_include_routers import auto_include_routers
from utils.exceptions import *
origins = ["http://localhost:3000"]
@contextlib.asynccontextmanager
async def lifespan(app):
if not broker.is_worker_process:
await broker.startup()
def create_app() -> FastAPI:
app = FastAPI(
separate_input_output_schemas=True,
default_response_class=settings.DEFAULT_RESPONSE_CLASS,
root_path=settings.ROOT_PATH,
lifespan=lifespan,
)
yield
register_middlewares(app)
register_exception_handlers(app)
auto_include_routers(app, routers, full_path=True)
app.mount("/static", StaticFiles(directory=settings.STATIC_DIR), name="static")
if not broker.is_worker_process:
await broker.shutdown()
taskiq_fastapi.init(broker, "main:app")
return app
app = FastAPI(
separate_input_output_schemas=True,
default_response_class=ORJSONResponse,
root_path="/api",
# lifespan=lifespan,
)
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.add_middleware(
GZipMiddleware,
minimum_size=1_000,
)
taskiq_fastapi.init(broker, "main:app")
@app.exception_handler(ObjectNotFoundException)
async def not_found_exception_handler(request: Request, exc: ObjectNotFoundException):
return JSONResponse(status_code=404, content={"detail": exc.name})
@app.exception_handler(ForbiddenException)
async def forbidden_exception_handler(request: Request, exc: ForbiddenException):
return JSONResponse(status_code=403, content={"detail": exc.name})
auto_include_routers(app, routers, True)
app.mount("/static", StaticFiles(directory="static"), name="static")
app = create_app()