web-dev-qa-db-fra.com

Comment mesurer le temps de réponse du serveur pour Python demande une requête POST?

Je crée requests des requêtes POST comme celle-ci, où je spécifie le seuil d'expiration:

response = requests.post(url, data=post_fields, timeout=timeout)

Cependant, pour déterminer une "bonne" valeur de seuil, je voudrais comparer le temps de réponse du serveur à l'avance.

Comment calculer les temps de réponse minimum et maximum pour le serveur?

17
Shuzheng

L'objet Response renvoyé par requests.post() possède une propriété appelée elapsed, qui donne le delta de temps entre le Request a été envoyé et le Response a été reçu. Pour obtenir le delta en quelques secondes, utilisez la méthode total_seconds():

response = requests.post(url, data=post_fields, timeout=timeout)
print(response.elapsed.total_seconds())

Il convient de mentionner que requests.post() est une opération synchrone, ce qui signifie qu'elle "bloque" jusqu'à ce que la réponse soit reçue.

37

Cela dépend si vous pouvez frapper le serveur avec un grand nombre de demandes de test ou si vous devez attendre que de vraies demandes se produisent.

Si vous avez besoin de données de demande réelles, vous devez boucler l'appel pour déterminer l'heure de chaque demande:

start = time.clock()
response = requests.post(url, data=post_fields, timeout=timeout)
request_time = time.clock() - start
self.logger.info("Request completed in {0:.0f}ms".format(request_time)
#store request_time in persistent data store

Vous auriez besoin d'un endroit pour stocker les résultats de chaque demande sur une période de temps (fichier, base de données, etc.). Ensuite, vous pouvez simplement calculer les statistiques des temps de réponse.

Si vous avez un serveur de test disponible, vous pouvez comparer la réponse sans python en utilisant quelque chose comme apachebench et en envoyant des données de test pour chaque demande:

https://Gist.github.com/kelvinn/6a1c51b8976acf25bd78

4
Daniel Scott