我目前正在研究一个客户端,它应该通过实际的响应时间(以及网络单独的时间)来确定服务器的运行状况。我遇到a implementation的new HTML5 feature,它基本上给了我所有指标,我感兴趣的是:
我知道我可以使用Selenium和PhantomJS并只解析输出,但出于性能和可扩展性的原因,我更喜欢解决方案urllib或者请求,这会将其分解为DNS请求,网络上的时间和服务器响应的实际时间。
答案 0 :(得分:4)
为了构建@Andre Daniel提供的引用,此代码通过DNS获取域IP,并打印出已用时间。然后,它会删除URL,打印时间,并在删除同一URL的DNS查找时间后打印已用时间。
import socket, time, urllib, urlparse
URL = 'http://example.com/123'
print URL, 'timing:'
urlinfo = urlparse.urlparse(URL)
start = time.time()
ip = socket.gethostbyname( urlinfo.netloc )
dns_tm = time.time()-start
print 'DNS:\t\t{:.3f} seconds'.format( dns_tm )
start = time.time()
_data = urllib.urlopen(URL).read()
load_tm = time.time()-start
print 'load:\t\t{:.3f} seconds'.format( load_tm )
print 'w/o DNS:\t{:.3f} seconds'.format( load_tm-dns_tm )
http://example.com/123 timing:
DNS: 0.054 seconds
load: 0.104 seconds
w/o DNS: 0.050 seconds