創建requests
後請求這樣的,我在那裏指定超時閾值:如何測量Python請求的服務器響應時間POST請求?
response = requests.post(url, data=post_fields, timeout=timeout)
然而,要確定一個「好」的閾值,我想標杆服務器的響應時間提前。
如何計算服務器的最小和最大響應時間?
創建requests
後請求這樣的,我在那裏指定超時閾值:如何測量Python請求的服務器響應時間POST請求?
response = requests.post(url, data=post_fields, timeout=timeout)
然而,要確定一個「好」的閾值,我想標杆服務器的響應時間提前。
如何計算服務器的最小和最大響應時間?
的Response
對象由requests.post()
返回有一個屬性稱爲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
你會需要的地方每個請求的結果存儲在一段時間(文件,數據庫等)。然後,您可以計算響應時間的統計信息。
如果你有一個測試服務器可用,你可以基準,而無需使用類似apachebench蟒蛇併爲每個請求發送測試數據的響應:
查看'contextmanager'你可以將它包裝在一個簡單的函數中,該函數需要經過的時間,而不必編寫一個全新的裝飾器 –