如何在Python中选择最近/最快的镜像?
我一直在考虑如何在Python中实现镜像选择。当我调用服务的API时,会收到一个IP地址的响应。现在我想用这个地址来检查它离我有多近。如果不近,就重试。我想到了使用ping命令,因为我对同一个数据中心的IP地址的延迟大约是1毫秒,但如果是全球范围内的地址,延迟就会高很多。我查了一些关于如何在Python中实现ping的例子,但感觉这些方法比较复杂,而且有点像是变通的做法(比如检查目标IP的延迟是否小于10毫秒)。可能还有更好的方法来解决这个问题,而我可能还不知道。
你们有什么想法?我不能每次都下载测试文件来测试速度。用GeoIP还是ping?或者其他什么方法?
2 个回答
1
调用所有的服务接口,然后使用响应最快的那个。
4
YUM最快镜像插件使用了一种简单的方法来测量连接到远程服务器某个端口所需的时间。虽然这种方法比较粗糙,它测量的是延迟而不是带宽,但效果还是不错的:
time_before = time.time()
sock.connect((self.host, self.port))
result = time.time() - time_before
sock.close()