Python 自动化运维 pycurl

本文介绍了一种使用PyCurl库来检测Web服务的方法,包括获取HTTP状态码、DNS解析时间、连接时间等关键指标,从而评估网站的服务质量。

  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
=  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对象


测试

wKioL1nd-hnRdwd4AAB7f2BkHTM734.png

本文转自  red777    51CTO博客,原文链接:http://blog.51cto.com/12314711/1971518


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值