mirror of
https://github.com/wowlikon/LiB.git
synced 2026-03-21 23:53:38 +00:00
28 lines
884 B
Python
28 lines
884 B
Python
import sys
|
|
|
|
from fastapi import Request, Response, status
|
|
from starlette.middleware.base import BaseHTTPMiddleware
|
|
from fastapi.responses import JSONResponse
|
|
|
|
from library_service.settings import get_logger
|
|
|
|
|
|
async def catch_exception_middleware(request: Request, call_next):
|
|
"""Middleware для подробного json-описания Internal error"""
|
|
try:
|
|
return await call_next(request)
|
|
except Exception as exc:
|
|
exc_type, exc_value, exc_tb = sys.exc_info()
|
|
logger = get_logger()
|
|
logger.exception(exc)
|
|
|
|
return JSONResponse(
|
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
|
content={
|
|
"message": str(exc),
|
|
"type": exc_type.__name__ if exc_type else "Unknown",
|
|
"path": str(request.url),
|
|
"method": request.method,
|
|
},
|
|
)
|