File tree Expand file tree Collapse file tree
Chapter03/reservation-service/presentation Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import logging
2+ import time
13from collections .abc import AsyncIterator
24from contextlib import asynccontextmanager
3- from typing import TypedDict
5+ from typing import Awaitable , Callable , TypedDict
46
5- from fastapi import FastAPI
7+ from fastapi import FastAPI , Request , Response
68
79from domain .repositories import AvailabilitySlotRepository
810from infrastructure .in_memory_slot_repository import (
1113
1214from .api .routes import router
1315
16+ logger = logging .getLogger ("uvicorn" )
17+
1418
1519class State (TypedDict ):
1620 repository : AvailabilitySlotRepository
@@ -48,3 +52,17 @@ def health_check():
4852
4953
5054app .include_router (router = router )
55+
56+
57+ @app .middleware ("http" )
58+ async def measuring_request_performance (
59+ request : Request ,
60+ call_next : Callable [[Request ], Awaitable [Response ]],
61+ ):
62+ start_time = time .perf_counter ()
63+ logger .debug ("measuring performance logger" )
64+ response = await call_next (request )
65+ process_time = time .perf_counter () - start_time
66+ logger .debug (f"measured performance:{ str (process_time )} " )
67+ response .headers ["X-Process-Time" ] = str (process_time )
68+ return response
You can’t perform that action at this time.
0 commit comments