14 lines
599 B
Python
14 lines
599 B
Python
import datetime
|
|
import zoneinfo
|
|
from fastapi import Request, Response
|
|
from starlette.middleware.base import BaseHTTPMiddleware
|
|
|
|
from app.utils.monitoring import monitoring
|
|
|
|
class MetricsMiddleware(BaseHTTPMiddleware):
|
|
async def dispatch(self, request: Request, call_next):
|
|
start = datetime.datetime.now(zoneinfo.ZoneInfo("Europe/Moscow"))
|
|
response: Response = await call_next(request)
|
|
end = datetime.datetime.now(zoneinfo.ZoneInfo("Europe/Moscow"))
|
|
monitoring.send_metric(start, end, request.url.path, response.status_code, request.method)
|
|
return response |