web-dev-qa-db-ja.com

PythonリクエストPOSTリクエストのサーバー応答時間を測定する方法?

このようなrequests POSTリクエストを作成し、タイムアウトしきい値を指定します:

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

ただし、「適切な」しきい値を決定するために、サーバーの応答時間を事前にベンチマークしたいと思います。

サーバーの最小および最大応答時間を計算するにはどうすればよいですか?

17
Shuzheng

requests.post()によって返されるResponseオブジェクトには、elapsedというプロパティがあり、Requestが送信されてからResponseを受信しました。デルタを秒単位で取得するには、total_seconds()メソッドを使用します。

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

requests.post()は同期操作であり、応答が受信されるまで「ブロック」されることに注意してください。

37

大量のテストリクエストでサーバーにアクセスできるかどうか、または実際のリクエストが発生するまで待機する必要があるかどうかによって異なります。

実際の要求データが必要な場合は、呼び出しをラップして各要求の時間を決定する必要があります。

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

一定期間(ファイル、データベースなど)にわたって各リクエストの結果を保存する場所が必要になります。次に、応答時間の統計を計算するだけです。

利用可能なテストサーバーがある場合、pythonなしで応答をベンチマークできます。apachebenchのようなものを使用し、各リクエストのテストデータを送信します。

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

4
Daniel Scott