0 Tage Serie
python / intermediate
Snippet

Django Middleware für Request-Timing

Middleware in Django befindet sich zwischen dem Webserver und deinen Views und verarbeitet jede Anfrage/Antwort. Diese benutzerdefinierte Middleware misst und protokolliert die Ausführungszeit jeder Anfrage und fügt die Dauer als benutzerdefinierten HTTP-Header für Überwachungszwecke hinzu.

snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import time
import logging
logger = logging.getLogger(__name__)
class RequestTimingMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
start_time = time.perf_counter()
response = self.get_response(request)
duration = time.perf_counter() - start_time
logger.info(
f"{request.method} {request.path} "
f"completed in {duration:.4f}s"
)
response['X-Response-Time'] = f"{duration:.4f}s"
return response
django
Erklärung
1
def __init__(self, get_response):
Middleware-Initialisierung erhält die nächste Middleware oder View in der Kette
2
def __call__(self, request):
Diese Dunder-Methode wird für jede HTTP-Anfrage aufgerufen und verarbeitet vor und nach dem View
3
time.perf_counter()
Hochauflösender Leistungszähler für genaue Zeitmessungen
4
response['X-Response-Time'] = f"..."
Füge benutzerdefinierten Header zur Antwort für clientseitige Zeitmessungs-Sichtbarkeit hinzu