MCPcopy Create free account
hub / github.com/dbunt1tled/python-fast-api / dispatch

Method dispatch

src/core/http/middleware/logging.py:19–53  ·  view source on GitHub ↗
(self, request: Request, call_next: Callable)

Source from the content-addressed store, hash-verified

17 self.logger = logger
18
19 async def dispatch(self, request: Request, call_next: Callable) -> Response:
20 start_time = time.time()
21 body_request = ""
22 if request.method in ["POST", "PUT", "PATCH"]:
23 if not hasattr(request.state, "body"):
24 return await call_next(request)
25 body = request.state.body
26 body_request = body.decode("utf-8", errors="ignore")
27 try:
28 parsed_json = json.loads(body_request)
29 parsed_json = filter_params(parsed_json)
30 body_request = json.dumps(parsed_json, ensure_ascii=False, indent=2)
31 finally:
32 pass
33 try:
34 response = await call_next(request)
35 res_body = [section async for section in response.body_iterator]
36 response.body_iterator = iterate_in_threadpool(iter(res_body))
37 body_response = res_body[0].decode()
38 duration_ms = (time.time() - start_time) * 1000
39 self.logger.log_request_full(
40 request=request,
41 status_code=response.status_code,
42 body_request=body_request,
43 body_response=body_response,
44 duration_ms=duration_ms,
45 )
46
47 return response
48
49 except Exception as e:
50 duration_ms = (time.time() - start_time) * 1000
51
52 self.logger.log_request_exception(request=request, e=e, body_request=body_request, duration_ms=duration_ms)
53 raise e

Callers

nothing calls this directly

Calls 3

filter_paramsFunction · 0.90
log_request_fullMethod · 0.80
log_request_exceptionMethod · 0.80

Tested by

no test coverage detected