我需要比较一些CDN服务,所以我编写了一个简短的python脚本来重复向部署在这些CDN上的资源发送get请求,并记录往返时间。我在不同城市的几台PC上运行脚本。 我就这样做了:
t0 = time.clock()
r = requests.get(test_cdn_url)
t1 = time.clock()
roundtrip = t1-t0 # in seconds
对于大多数请求,往返时间在1秒内:200-500毫秒,但偶尔会报告一个请求在几秒钟内完成:3-5秒,一次9秒。
这是它的方式,还是我使用错误的工具来测量?换句话说,请求lib是否做了某些事情(缓存或一些重量级操作),这使得度量标准完全错误?
答案 0 :(得分:3)
Response
对象提供elapsed
属性:
发送请求和到达之间经过的时间 响应(作为timedelta)
您的代码将如下所示:
r = requests.get(test_cdn_url)
roundtrip = r.elapsed.total_seconds()
答案 1 :(得分: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
标头,那么应确保在此过程中不会发生缓存 - 并且您的原始代码应该有效地为请求提供时间。