web-dev-qa-db-ja.com

Pythonリクエストでウェブサイトの読み込み時間を測定する

インターネット接続の遅延、より具体的にはWebサイトの読み込み時間をテストするためのツールを構築しようとしています。ロード部分にpython requests モジュールを使用することを考えました。

問題は、完全な応答を得るのにかかった時間を測定する組み込み機能がないことです。このために、私はtimeitモジュールを使用すると思いました。

私が知らないのは、timeitを次のように実行した場合です:

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

応答が到着するまでにかかった時間を実際に測定していますか、それともリクエストの作成、送信、受信などにかかる時間ですか?非常に長い遅延(約700ミリ秒)でネットワークをテストしているので、おそらくその実行時間を無視できると思いますか?

これをプログラムで行うより良い方法はありますか?

40
cookM

あなたの質問に関しては、それはのための合計時間でなければなりません

  1. リクエストオブジェクトを作成する時間
  2. リクエストを送信
  3. 応答を受け取る
  4. 解析応答(Thomas Orozcoからのコメントを参照)

単一のリクエストのロード時間を測定する他の方法は、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

リクエストの最新バージョンにはそのような機能があります。

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

例えば:

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