core/services/exception.py

23 lines
779 B
Python

import logging
from collections.abc import Awaitable
from typing import Callable
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.requests import Request
from starlette.responses import JSONResponse, Response
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.DEBUG)
class ExceptionHandlerMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next: Callable[[Request], Awaitable[Response]]) -> Response:
try:
return await call_next(request)
except Exception:
logger.exception("Unhandled exception occurred")
return JSONResponse(
{"detail": "An error occurred. Please try again later."},
status_code=500,
)