您的位置:首页 > 其它

检测web服务质量

2014-12-23 11:16 239 查看
调用pycurl提供的方法,探测web服务质量,如响应http码,请求延时,http头信息,下载速度等

pycurl安装:

easy_install pycurl

pip install pycurl

源码安装:

源码安装curl

wget http://curl.haxx.se/download/curl-7.39.0.tar.gz
tar  xf -->./configure-->make && make install-->export  LD_LIBRARY_PATH=/usr/local/lib

wget https://pypi.python.org/packages/source/p/pycurl/pycurl-7.19.5.tar.gz --no-check-certificate

tar xf -->cd -->python setup.py install --curl-config=/usr/local/bin/curl-config

检验安装结果:

import pycurl

pycurl.version  -->检验

检测web服务质量代码

webcheck.py

#!/usr/bin/env python

#encoding=utf-8

import os,sys

import time

import pycurl

URL="http://www.jd.com"    #目标url

c=pycurl.Curl()    #创建一个Curl对象

c.setopt(pycurl.URL,URL)   #定义请求url

c.setopt(pycurl.CONNECTTIMEOUT,5)   #定义请求连接的等待时间

c.setopt(pycurl.TIMEOUT,5) #定义请求超时时间

c.setopt(pycurl.NOPROGRESS,1)  #屏蔽下载进度条,非0表示屏蔽,0表示不屏蔽

c.setopt(pycurl.FORBID_REUSE,1) #完成交互后强制断开连接,不重用

c.setopt(pycurl.MAXREDIRS,1)  #指定http重定向的最大数为1

c.setopt(pycurl.DNS_CACHE_TIMEOUT,30)  #设置保存dns信息的时间

#创建一个文件对象indexfile,以wb方式打开,存储返回的http头信息及页面内容

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 "connect error:"+str(e)

        indexfile.close()

        c.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 "开始传输时间: %.2f ms" % (STARTTRANSFER_TIME*1000)

print "传输结束总时间: %.2f ms" % (TOTAL_TIME*1000)

print "下载数据包大小: %d bytes/s" % (SIZE_DOWNLOAD)

print "HTTP头部大小: %d bytes/s" % (HEADER_SIZE)

print "平均下载速度: %d bytes/s" % (SPEED_DOWNLOAD)

#关闭文件及curl对象

indexfile.close()

c.close()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息