• python之web服务质量探测(pycurl模块)


    一个web网站的好坏主要看可用性和响应速度,直接影响用户体验,让我们来探测一下自己公司网站速度和质量到底怎么样!

    import pycurl
    import os ,sys
    import time
    URL ='http://www.baidu.com' #探测目标的url
    c =pycurl.Curl() #创建一个curl对象
    c.setopt(pycurl.URL,URL)#定义请求url的常量
    c.setopt(pycurl.CONNECTTIMEOUT,10) #连接等待时间
    c.setopt(pycurl.TIMEOUT,10) #超时时间
    c.setopt(pycurl.NOPROGRESS,0) #是否屏蔽进度条
    c.setopt(pycurl.MAXREDIRS,5) #指定http重定向最大数
    c.setopt(pycurl.FORBID_REUSE,1) #完成交互后强制断开,不重用
    c.setopt(pycurl.DNS_CACHE_TIMEOUT,60) #DNS保存信息时间
    #c.setopt(pycurl.URL,'http://www.auvgo.com') #指定请求的URL
    #c.setopt(pycurl.USERAGENT,"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 2.0.50324)") #配置HTTP请求头
    
    #创建一个文件对象,用'wb'方式打开,用来存储http头部和页面内容
    indexfile =open(os.path.dirname(os.path.realpath(__file__))+"/context.txt",'wb')
    c.setopt(pycurl.WRITEHEADER,indexfile) #将返回的http header定向到indexfile文件对象
    c.setopt(pycurl.WRITEDATA,indexfile)#将返回的http 数据内容定向到indexfile文件对象
    try:
        c.perform() #提交请求
    except Exception as e:
        print('连接错误:'+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()
  • 相关阅读:
    DbUtils类的添加,修改,删除
    QueryRunner类的八种结果处理集
    中国传统文化---------斗地主----------
    剑指Offer42 左旋字符串
    剑指Offer41 反转单词顺序,单词字符顺序不变
    剑指Offer40 和为s的连续正数序列
    剑指Offer39 数组中寻找和为sum的两个数字
    剑指Offer36 数字在排序数组中出现的次数
    剑指Offer37 二叉树深度与平衡二叉树判断
    剑指Offer38 数组所有数字出现两次,只有两个出现了一次,找出这两个数字
  • 原文地址:https://www.cnblogs.com/fuyuteng/p/12556338.html
Copyright © 2020-2023  润新知