BakoAI / app /middleware /timeout.py
Okidi Norbert
Deployment fix: clean backend only
c6abe34
import anyio
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.requests import Request
from starlette.responses import JSONResponse, Response
class TimeoutMiddleware(BaseHTTPMiddleware):
def __init__(self, app, timeout_seconds: int):
super().__init__(app)
self.timeout_seconds = timeout_seconds
async def dispatch(self, request: Request, call_next) -> Response:
try:
with anyio.fail_after(self.timeout_seconds):
return await call_next(request)
except TimeoutError:
return JSONResponse(
status_code=504,
content={"error": "Request timed out", "details": {"timeout_seconds": self.timeout_seconds}},
)