检测web服务质量

来源:互联网 发布:网红淘宝店前十名男装 编辑:程序博客网 时间:2024/06/05 23:46

调用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()




0 0
原创粉丝点击