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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import timeimport logginglogger = logging.getLogger(__name__)class RequestTimingMiddleware:def __init__(self, get_response):self.get_response = get_responsedef __call__(self, request):start_time = time.perf_counter()response = self.get_response(request)duration = time.perf_counter() - start_timelogger.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