如何在Python中选择最近/最快的镜像?

如何在Python中选择最近/最快的镜像?,python,ping,geo,geoip,Python,Ping,Geo,Geoip,我一直在考虑如何在Python中实现镜像拾取。当我调用服务API时,我得到带有IP地址的响应。现在我想记下那个地址,看看它是否离我很近。如果没有,请重试。我考虑过ping,因为我只有~1ms ping到托管在同一数据中心的IP地址,但在世界范围内要高得多。我查阅了一些关于如何在Python中实现ping的示例,但它似乎相当复杂,而且感觉有点粗糙(比如检查目标IP是否小于10ms)。也许有更好的方法来解决这个问题,我可能不知道 你的想法是什么?我不能每次下载任何测试文件来测试速度。GeoIP还是p

我一直在考虑如何在Python中实现镜像拾取。当我调用服务API时,我得到带有IP地址的响应。现在我想记下那个地址,看看它是否离我很近。如果没有,请重试。我考虑过ping,因为我只有~1ms ping到托管在同一数据中心的IP地址,但在世界范围内要高得多。我查阅了一些关于如何在Python中实现ping的示例,但它似乎相当复杂,而且感觉有点粗糙(比如检查目标IP是否小于10ms)。也许有更好的方法来解决这个问题,我可能不知道


你的想法是什么?我不能每次下载任何测试文件来测试速度。GeoIP还是ping?或者其他什么?

调用所有服务API实例,并使用响应最快的实例。

使用粗略的方法来计时连接到远程服务器上的端口所需的时间。虽然它是粗糙的,测量的是滞后而不是带宽,但它相当有效:

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