web-dev-qa-db-fra.com

Mesurer le temps de chargement du site Web avec Python

J'essaie de créer un outil pour tester le retard de ma connexion Internet, plus précisément les temps de chargement du site Web. J'ai pensé à utiliser le module python requêtes pour la partie chargement.

Le problème est qu'il n'a pas de fonctionnalité intégrée pour mesurer le temps nécessaire pour obtenir la réponse complète. Pour cela, j'ai pensé utiliser le module timeit.

Ce dont je ne suis pas sûr, c'est que si je lance timeit comme ceci:

t = timeit.Timer("requests.get('http://www.google.com')", "import requests")

Je mesure vraiment le temps qu'il a fallu à la réponse pour arriver ou est-ce le temps qu'il faut pour que la demande soit construite, envoyée, reçue, etc.? Je suppose que je pourrais peut-être ignorer ce temps d'exécution car je teste des réseaux avec de très longs délais (~ 700 ms)?

Existe-t-il une meilleure façon de procéder par programmation?

40
cookM

Quant à votre question, ce devrait être le temps total pour

  1. temps pour créer l'objet de demande
  2. Envoyer une demande
  3. Recevoir une réponse
  4. Réponse d'analyse (voir le commentaire de Thomas Orozco)

Vous pouvez également mesurer le temps de chargement d'une seule demande en utilisant urllib:

nf = urllib.urlopen(url)
start = time.time()
page = nf.read()
end = time.time()
nf.close()
# end - start gives you the page load time
29
pyfunc

Il existe une telle fonctionnalité dans la dernière version des demandes:

http://docs.python-requests.org/en/latest/api/?highlight=elapsed#requests.Response.elapsed

Par exemple:

requests.get("http://127.0.0.1").elapsed.total_seconds()
164
GvS