mirror of
https://github.com/open-webui/open-webui.git
synced 2025-12-11 20:05:19 +00:00
refac: otel metrics handle 500
This commit is contained in:
parent
e66e0526ed
commit
b14617a653
1 changed files with 20 additions and 13 deletions
|
|
@ -163,20 +163,27 @@ def setup_metrics(app: FastAPI, resource: Resource) -> None:
|
||||||
@app.middleware("http")
|
@app.middleware("http")
|
||||||
async def _metrics_middleware(request: Request, call_next):
|
async def _metrics_middleware(request: Request, call_next):
|
||||||
start_time = time.perf_counter()
|
start_time = time.perf_counter()
|
||||||
response = await call_next(request)
|
|
||||||
elapsed_ms = (time.perf_counter() - start_time) * 1000.0
|
|
||||||
|
|
||||||
# Route template e.g. "/items/{item_id}" instead of real path.
|
status_code = None
|
||||||
route = request.scope.get("route")
|
try:
|
||||||
route_path = getattr(route, "path", request.url.path)
|
response = await call_next(request)
|
||||||
|
status_code = getattr(response, "status_code", 500)
|
||||||
|
return response
|
||||||
|
except Exception:
|
||||||
|
status_code = 500
|
||||||
|
raise
|
||||||
|
finally:
|
||||||
|
elapsed_ms = (time.perf_counter() - start_time) * 1000.0
|
||||||
|
|
||||||
attrs: Dict[str, str | int] = {
|
# Route template e.g. "/items/{item_id}" instead of real path.
|
||||||
"http.method": request.method,
|
route = request.scope.get("route")
|
||||||
"http.route": route_path,
|
route_path = getattr(route, "path", request.url.path)
|
||||||
"http.status_code": response.status_code,
|
|
||||||
}
|
|
||||||
|
|
||||||
request_counter.add(1, attrs)
|
attrs: Dict[str, str | int] = {
|
||||||
duration_histogram.record(elapsed_ms, attrs)
|
"http.method": request.method,
|
||||||
|
"http.route": route_path,
|
||||||
|
"http.status_code": status_code,
|
||||||
|
}
|
||||||
|
|
||||||
return response
|
request_counter.add(1, attrs)
|
||||||
|
duration_histogram.record(elapsed_ms, attrs)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue