2014-04-09 70 views
0

我需要比較幾個CDN服務,因此我編寫了一個簡短的python腳本來重複向這些CDN上部署的資源發送獲取請求,並記錄往返時間。我在不同城市的幾臺PC上運行這些腳本。 這是我做的:這是測量往返時間的正確方法嗎?

t0 = time.clock() 
r = requests.get(test_cdn_url) 
t1 = time.clock() 
roundtrip = t1-t0 # in seconds 

對於大多數的請求,往返時間是在1秒內:200-500ms,但偶爾,它報告說,在完成幾秒鐘的請求:3-5秒,一次9秒。

這是正確的方式,還是我使用錯誤的工具來衡量?換句話說,請求庫是否做了一些事情(緩存或一些重量級的操作),使度量標準完全錯誤?

+0

不會添加答案,因爲我不確定您的指標是否錯誤,b我會使用[timeit](https://docs.python.org/2/library/timeit.html)模塊。 – msvalkon

+0

您的Python代碼中的分號不是必需的,可用於使代碼不易讀。 –

+0

@StevenRumbalski你是對的,舊習慣死硬:( – NeoWang

回答

2

Response對象提供一個elapsed屬性:

的時間量發送請求和響應的到達 (作爲timedelta)之間經過

您的代碼將隨後看如:

r = requests.get(test_cdn_url) 
roundtrip = r.elapsed.total_seconds() 
1

如果你擔心requests是做什麼重量級的(或緩存),你總是可以使用urllib

nf = urllib.urlopen(url) 
t0 = time.time() 
page = nf.read() 
t1 = time.time() 
nf.close() 

roundtrip = t1 - t0 

另外,如果包括Cache-Control: no-cache頭與您的請求一起,那麼應確保在此過程中不會發生緩存 - 而且您的原始代碼應該有效地處理請求。

相關問題