23 lines
779 B
Python
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,
|
|
)
|