feat: add rate limiting, CORS, queue loop in lifespan

This commit is contained in:
2026-05-25 18:51:58 +02:00
parent 1feb012682
commit 1b1a0eb6ff
4 changed files with 69 additions and 7 deletions
+36 -2
View File
@@ -1,21 +1,55 @@
import asyncio
import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from slowapi import _rate_limit_exceeded_handler
from slowapi.errors import RateLimitExceeded
from src.backend.api.dependencies import limiter
from src.backend.api.routes.health import router as health_router
from src.backend.api.routes.topics import router as topics_router
from src.backend.api.routes.requests import router as requests_router
from src.backend.api.routes.sessions import router as sessions_router
from src.backend.api.routes.topics import router as topics_router
from src.backend.db.database import init_db
from src.backend.services.queue import queue_loop
from src.backend.services.worker_client import WorkerClient
logging.basicConfig(level=logging.INFO)
@asynccontextmanager
async def lifespan(app: FastAPI):
await init_db()
worker = WorkerClient()
task = asyncio.create_task(queue_loop(worker))
yield
task.cancel()
try:
await task
except asyncio.CancelledError:
pass
app = FastAPI(title="OpusAgent", version="0.1.0", lifespan=lifespan)
app = FastAPI(
title="OpusAgent",
version="0.1.0",
docs_url="/doc",
redoc_url="/redoc",
openapi_url="/openapi.json",
lifespan=lifespan,
)
app.state.limiter = limiter
app.add_exception_handler(RateLimitExceeded, _rate_limit_exceeded_handler)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(health_router, prefix="/api")
app.include_router(topics_router, prefix="/api")