2011-05-28 47 views
2

我一直在想如何在Python中實現鏡像選擇。當我打電話給服務API時,我得到IP地址的響應。現在我想收下這個地址,並檢查它是否與我接近。如果不是,請重試。我考慮過ping,因爲我對同一數據中心託管的IP地址只有約1ms的ping能力,但在全球範圍內要高得多。我查了一些關於如何在Python中實現ping的例子,但它看起來相當複雜,並且感覺有點詭異(比如檢查目標IP是否小於10ms)。解決這個問題可能有更好的方法,我可能不知道。如何在Python中選擇最近/最快的鏡像?

你有什麼想法?我無法每次下載任何測試文件來測試速度。 GeoIP或ping?或者是其他東西?

回答

4

YUM fastestmirror plugin使用一種粗略的方法計算連接到遠程服務器端口所需的時間。雖然它的原油,它測量滯後,而不是帶寬,這是相當有效的:

time_before = time.time() 
sock.connect((self.host, self.port)) 
result = time.time() - time_before 
sock.close() 
1

調用所有服務API實例並使用哪個響應最快。