Avancé
🧠 Fondamentaux
30 XP
0 personnes ont réussi
Middleware de timing avec headers
En production, on veut mesurer le temps de traitement de chaque requête. Un middleware de timing mesure le temps entre l'arrivee de la requête et l'envoi de la réponse, puis ajoute cette information dans un header HTTP de la réponse.
C'est exactement ce que font des outils comme Django Debug Toolbar ou New Relic, mais a un niveau plus fin.
Le module time de Python permet de mesurer ca : time.time() retourne le nombre de secondes ecoulees depuis le 1er janvier 1970. En faisant la difference entre deux appels, tu obtiens la duree.
Écris un middleware TimingMiddleware (new style) qui : - Dans __call__, note le temps de debut - Appelle get_response pour obtenir la réponse - Calcule la duree en millisecondes - Ajoute le header 'X-Processing-Time-Ms' avec la duree arrondie a 2 decimales (en string) - Retourne la réponse
Exemple :
import time mw = TimingMiddleware(lambda r: HttpResponse('ok')) req = HttpRequest() resp = mw(req) resp['X-Processing-Time-Ms'] contient quelque chose comme '0.02'
Tests (3/4)
Header present
import time
mw = TimingMiddleware(lambda r: HttpResponse('ok'))
req = HttpRequest()
resp = mw(req)
assert 'X-Processing-Time-Ms' in resp