这是衡量往返时间的正确方法吗?

时间:2014-04-09 15:14:07

标签: python performance web cdn python-requests

我需要比较一些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是否做了某些事情(缓存或一些重量级操作),这使得度量标准完全错误?

2 个答案:

答案 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标头,那么应确保在此过程中不会发生缓存 - 并且您的原始代码应该有效地为请求提供时间。