1.探测web服务质量(HTTP状态码,请求延时,HTTP头信息,下载速度等)
web服务质量:1.服务可用性
2.服务响应速度
2.实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import
os,sys
import
pycurl
import
time
URL
=
"http://www.baidu.com"
##目录的URL
c
=
pycurl.Curl()
##实例化
c.setopt(pycurl.URL,URL)
##定义请求的URL常量
c.setopt(pycurl.CONNECTTIMEOUT,
5
)
##定义请求连接等待时间
c.setopt(pycurl.TIMEOUT,
5
)
##定义请求超时时间
c.setopt(pycurl.NOPROGRESS,
1
)
##屏蔽下载进度条
c.setopt(pycurl.FORBID_REUSE,
1
)
##完成交互后强制断开连接,不重用
c.setopt(pycurl.MAXREDIRS,
1
)
##指定HTTP重定向的最大数为1
c.setopt(pycurl.DNS_CACHE_TIMEOUT,
30
)
##设置保存DNS信息的时间为30S
indexfile
=
open
(os.path.dirname(os.path.realpath(__file__))
+
"/content.txt"
,
"wb"
)
c.setopt(pycurl.WRITEHEADER, indexfile)
##将返回的HTTP HEADER定向到indexfile
c.setopt(pycurl.WRITEDATA, indexfile)
##将返回的HTML内容定向到indexfile文件对象
try
:
c.perform()
##提交请求
except
Exception,e:
print
"error"
indexfile.close()
sys.exit()
NAMELOOKUP_TIME
=
c.getinfo(c.NAMELOOKUP_TIME)
##获取DNS解析时间
CONNECT_TIME
=
c.getinfo(c.CONNECT_TIME)
##获取建立连接时间
PRETRANSFER_TIME
=
c.getinfo(c.PRETRANSFER_TIME)
##获取从建立连接到准备传输需要时间
STARTTRANSFER_TIME
=
c.getinfo(c.STARTTRANSFER_TIME)
##获取从建立连接到传输开始需要时间
TOTAL_TIME
=
c.getinfo(c.TOTAL_TIME)
##获取传输的总时间
HTTP_CODE
=
c.getinfo(c.HTTP_CODE)
##获取HTTP状态码
SIZE_DOWNLOAD
=
c.getinfo(c.SIZE_DOWNLOAD)
##获取下载数据包大小
HEADER_SIZE
=
c.getinfo(c.HEADER_SIZE)
##获取HTTP头部大小
SPEED_DOWNLOAD
=
c.getinfo(c.SPEED_DOWNLOAD)
##获取平均下载速度
print
"http状态码:%s "
%
HTTP_CODE
print
"dns解析时间:%.2f ms"
%
(NAMELOOKUP_TIME
*
1000
)
print
"建立连接时间:%.2f ms"
%
(CONNECT_TIME
*
1000
)
print
"准备传输时间:%.2f ms"
%
(PRETRANSFER_TIME
*
1000
)
print
"传输开始时间: %2.f ms"
%
(STARTTRANSFER_TIME
*
1000
)
print
"传输结束总时间: %.2f ms"
%
(TOTAL_TIME
*
1000
)
print
"下载数据包大小: %d bytes/s"
%
(SIZE_DOWNLOAD)
print
"HTTP头部大小: %d byte"
%
(HEADER_SIZE)
print
"平均下载速度:%d bytes/s"
%
(SPEED_DOWNLOAD)
indexfile.close()
##关闭文件
c.close()
##关闭Curl对象
|
测试
本文转自 red777 51CTO博客,原文链接:http://blog.51cto.com/12314711/1971518