Timing Middleware¶
timing_middleware
¶
Middleware that records wall-clock execution time of the downstream pipeline.
TimingMiddleware
¶
Bases: Middleware[RequestType, ResponseType]
Measures and logs the wall-clock time of downstream execution.
Uses time.monotonic() so measurements are unaffected by system
clock adjustments. Timing is reported at info level after the
handler returns, even when the handler raises an exception (the
elapsed time is logged in a finally block).
Responsibilities
- Record the elapsed wall-clock time for the downstream handler.
- Log the elapsed time at info level.
- Report timing even when the handler raises.
Non-Responsibilities
- Transform the request or response.
- Handle errors raised downstream.
Example
Source code in src/forging_blocks/presentation/builtin/timing_middleware.py
__init__(logger: LoggerPort) -> None
¶
Wrap logger so every request is timed.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
logger
|
LoggerPort
|
A |
required |
process(request: RequestType, next_handler: NextHandler[RequestType, ResponseType]) -> ResponseType
async
¶
Delegate to next_handler and log the elapsed time.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request
|
RequestType
|
The incoming request. |
required |
next_handler
|
NextHandler[RequestType, ResponseType]
|
The next callable in the pipeline chain. |
required |
Returns:
| Type | Description |
|---|---|
ResponseType
|
The response produced by the downstream handler. |