2012-06-22 20 views
27

インターネット接続の遅延、より具体的にはWebサイトの読み込み時間をテストするためのツールを作成しようとしています。私はPython requestsモジュールを読み込み部分に使用することを考えました。Pythonリクエストでウェブサイトの読み込み時間を測定する

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

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

私は、私は本当にそれが到着する応答をしたか、それがためにかかる時間である時間を測定するよ:私はそうのようにはtimeit実行した場合ということですわからないんだけど何

建造、送付、受領などの要請?私は非常に長い遅延(〜700ms)でネットワークをテストしているので、私はおそらくその実行時間を無視することができると思いますか?

これをプログラマチックに行うより良い方法はありますか?

答えて

19

あなたの質問については、それが応答

  • 解析の応答を受け取る要求
  • を送るリクエストオブジェクト
  • を作成する

    1. 時間の合計時間でなければなりません(トーマス・オロスコからのコメントを参照してください)

    単一のリクエストの読み込み時間を測定するその他の方法は、urllibを使用することです。

    01リクエストの最新バージョンではそのような機能があります
    nf = urllib.urlopen(url) 
    start = time.time() 
    page = nf.read() 
    end = time.time() 
    nf.close() 
    # end - start gives you the page load time 
    
  • +5

    + 4は本当に良さそうに見えますHTTPレスポンス –

    +1

    を解析しますが、見て私が見ている例の一つ '1。 start_timer = time.time() 2.ブラウザを開き、レスポンスを読む 3.待ち時間= time.time() - start_timer' 同じ問題がありますか? – cookM

    +0

    @cookM:私はそれを問題として見ていませんでしたが、要求の待ち時間がどのようなものかをリアルタイムで経験しました。実際には、多くの要求に対して平均しており、現実的な時間に近いでしょう。 – pyfunc

    105

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

    たとえば

    requests.get("http://127.0.0.1").elapsed.total_seconds() 
    
    +24

    :応答時間を秒単位で取得する: 'requests.get(" http://127.0.0.1 ").elapsed.total_seconds()' –

    +1

    Micael Oslのコメントに追加するには: 'total_seconds()'は10進数で、マイクロ秒の精度を持つようです。 – Luc

    +4

    クライアントサイドでコードをプロファイリングおよび最適化するためにこれを使用しないでください。サーバーの応答時間(OPの質問)のみを測定します。 _リクエストを送信してからレスポンスが到着するまでの経過時間(timedelta)。このプロパティは、要求の最初のバイトを送信してからヘッダーを解析するまでの時間を測定します。したがって、応答内容やストリームキーワード引数の値を消費することによって影響を受けません。 – ChaimG

    関連する問題