#!/usr/bin/python3
# _*_ coding:utf-8 _*_
import sys, os
import time
import pycurl url = "https://dev.veewap.com" # 探测的目标URL
c = pycurl.Curl() # 创建一个Curl对象
c.setopt(pycurl.SSL_VERIFYPEER,0)
c.setopt(pycurl.SSL_VERIFYHOST,0)
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信息的时间为30秒
# 创建一个文件对象,以"web"方式打开,用来存储返回的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 as e:
print("connection 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()

Python学习笔记 - 实现探测Web服务质量的更多相关文章

  1. [Python]实践:实现探测Web服务质量

    来源:Python 自动化运维 技术与最佳实践 HTTP服务是最流行的互联网应用之一,服务质量的好坏关系到用户体验以及网站的运营服务水平,最常用的有两个标准:1.服务的可用性,比是否处于正常提供服务状 ...

  2. python 学习笔记十五 web框架

    python Web程序 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. Python的WEB框架分为两类: 自己写socket,自 ...

  3. 6.python探测Web服务质量方法之pycurl模块

    才开始学习的时候有点忽略了这个模块,觉得既然Python3提供了requests库,为什么多此一举学习这个模块.后来才发现pycurl在探测Web服务器的时候的强大. pycurl是一个用c语言写的l ...

  4. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  5. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  6. Python学习笔记(十四)

    Python学习笔记(十四): Json and Pickle模块 shelve模块 1. Json and Pickle模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不 ...

  7. python学习笔记目录

    人生苦短,我学python学习笔记目录: week1 python入门week2 python基础week3 python进阶week4 python模块week5 python高阶week6 数据结 ...

  8. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

  9. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

随机推荐

  1. 变量内存空间的释放---c语言

    堆栈内存释放: 栈的内存是由编译器自动分配.释放,出了作用域就释放. 堆的内存由程序员分配.释放,他的作用域是整个程序,如果程序没有释放,程序结束时会自动释放.

  2. python 回溯法 子集树模板 系列 —— 17、找零问题

    问题 有面额10元.5元.2元.1元的硬币,数量分别为3个.5个.7个.12个.现在需要给顾客找零16元,要求硬币的个数最少,应该如何找零?或者指出该问题无解. 分析 元素--状态空间分析大法:四种面 ...

  3. 类调用自己的静态方法必须把该方法设置为public

    否则调用不了 ParaChecker.isOK(bindingResult); public class ParaChecker { static BaseResult paraCheck(Bindi ...

  4. 命令行模式和python交互模式

    一.命令行模式 在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:>:. 二.Python交互模式 在命令行模式下敲命令python,就看到类似如下的一堆文本输出 ...

  5. (3)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Consul服务治理

    Consul是注册中心,服务提供者.服务提供者.服务消费者等都要注册到Consul中,这样就可以实现服务提供者.服务消费者的隔离. 除了Consul之外,还有Eureka.Zookeeper等类似软件 ...

  6. spring cloud资料汇总

    https://www.cnblogs.com/Java3y/p/9540386.html#commentform --非常好的文章,里面还有海量学习资料

  7. Docker原理探究

    问题思考:-------------------------------------Docker浅显原理理解-------------------------------------P1. ubunt ...

  8. CentOS-7.x Yum Repo Mirror

    一. 环境 1.1 主机信息 主机 OS Storage 备注 100.64.140.101 centos 7.6 /dev/sdb > 100GB 1.selinux disable; 2.放 ...

  9. 利用BFS实现最短路

    首先,我们要知道BFS的思想,BFS全称是Breadth-First-Search. 二叉树的BFS:通过BFS访问,它们的访问顺序是它们到根节点距离从小到大的排序. 图的BFS:同样的,离起点越近, ...

  10. 统计学习方法c++实现之六 支持向量机(SVM)及SMO算法

    前言 支持向量机(SVM)是一种很重要的机器学习分类算法,本身是一种线性分类算法,但是由于加入了核技巧,使得SVM也可以进行非线性数据的分类:SVM本来是一种二分类分类器,但是可以扩展到多分类,本篇不 ...