このようなrequests
POSTリクエストを作成し、タイムアウトしきい値を指定します:
response = requests.post(url, data=post_fields, timeout=timeout)
ただし、「適切な」しきい値を決定するために、サーバーの応答時間を事前にベンチマークしたいと思います。
サーバーの最小および最大応答時間を計算するにはどうすればよいですか?
requests.post()
によって返されるResponse
オブジェクトには、elapsed
というプロパティがあり、Request
が送信されてからResponse
を受信しました。デルタを秒単位で取得するには、total_seconds()
メソッドを使用します。
_response = requests.post(url, data=post_fields, timeout=timeout)
print(response.elapsed.total_seconds())
_
requests.post()
は同期操作であり、応答が受信されるまで「ブロック」されることに注意してください。
大量のテストリクエストでサーバーにアクセスできるかどうか、または実際のリクエストが発生するまで待機する必要があるかどうかによって異なります。
実際の要求データが必要な場合は、呼び出しをラップして各要求の時間を決定する必要があります。
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のようなものを使用し、各リクエストのテストデータを送信します。