我需要比较几个CDN服务,所以我编写了一个简短的python脚本,反复向部署在这些CDN上的资源发送get请求,并记录往返时间。我在不同城市的几台电脑上运行脚本。我就是这样做的:
t0 = time.clock()
r = requests.get(test_cdn_url)
t1 = time.clock()
roundtrip = t1-t0 # in seconds对于大多数请求,往返时间为1秒:200-500 is,但有时它报告的请求在几秒钟内完成: 3-5秒,一次9秒。
这只是它的方式,还是我使用错误的工具来测量?换句话说,请求库是否做了一些使度量完全错误的事情(缓存或一些重量级操作)?
发布于 2014-04-09 15:29:27
Response对象提供了一个elapsed属性:
从发送请求到响应到达之间所用的时间(作为时间增量)。
然后,您的代码将类似于:
r = requests.get(test_cdn_url)
roundtrip = r.elapsed.total_seconds()发布于 2014-04-09 15:22:45
如果您担心requests正在做任何繁重的事情(或缓存),您可以始终使用urllib
nf = urllib.urlopen(url)
t0 = time.time()
page = nf.read()
t1 = time.time()
nf.close()
roundtrip = t1 - t0或者,如果您在请求中包含了一个Cache-Control: no-cache头,那么这将确保在此过程中不会发生缓存--您的原始代码应该能够有效地计时请求。
https://stackoverflow.com/questions/22966876
复制相似问题