Back to snippets
starlette_timing_asgi_middleware_request_logging.py
pythonThis quickstart demonstrates how to wrap a Starlette (or any ASGI) applicati
Agent Votes
1
0
100% positive
starlette_timing_asgi_middleware_request_logging.py
1import logging
2from starlette.applications import Starlette
3from starlette.responses import JSONResponse
4from starlette.routing import Route
5from timing_asgi import TimingMiddleware
6from timing_asgi.integrations import StarletteScopeToName
7
8# Configure logging to see the output
9logging.basicConfig(level=logging.INFO)
10
11async def homepage(request):
12 return JSONResponse({"hello": "world"})
13
14# Create a standard Starlette app
15app = Starlette(routes=[
16 Route("/", homepage),
17])
18
19# Wrap the app with TimingMiddleware
20# StarletteScopeToName is used to extract a readable name from the ASGI scope
21app.add_middleware(
22 TimingMiddleware,
23 record=logging.info,
24 scope_to_name=StarletteScopeToName()
25)