#!/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. Nuxt.js + koa2 入门

    1. nuxt项目初始化 下面是使用 koa 模板方法初始化一个项目,使用该方法需要将 nuxt 的版本降至1.4.2: 官方 https://zh.nuxtjs.org/guide/installa ...

  2. Number.toString SyntaxError

    问题分析 问题 20.toString(); VM163:1 Uncaught SyntaxError: Invalid or unexpected token 分析 "."号的原 ...

  3. Redis简介、安装、配置、启用学习笔记

    前一篇文章有介绍关系型数据库和非关系型数据库的差异,现在就来学习一下用的较广的非关系型数据库:Redis数据库 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-v ...

  4. HTML-JS 循环 函数 递归

    [循环结构的执行步骤] 1.声明循环变量 2.判断循环条件 3.执行循环体操作 4.更新循环变量 然后,循环执行2-4,直到条件不成立时,跳出循环. while循环()中的表达式,运算结果可以是各种类 ...

  5. 记录:将图片数据生成 tfrecords 文件并在训练使用时读取

    直接用别人的就行了: https://github.com/myCVs/GenTFRecords

  6. JMeter采用NON GUI模式时如何记录并查看错误

    在GUI模式下执行JMeter测试时,我们可以通过添加View Results Tree组件来查看JMeter请求的各类详情.那如果在正式测试场景中,当我们采用NON GUI模式时,遇到了断言或其他错 ...

  7. [翻译]:Artificial Intelligence for games 5.3 STATE MACHINES:状态机

    目录 Chapter 5 Decision Making 5.3 STATE MACHINES:状态机 Chapter 5 Decision Making 5.3 STATE MACHINES:状态机 ...

  8. 搭建ZooKeeper

    从http://zookeeper.apache.org/ 官网上下载最新的zookeeper版本, 我下载的版本是 zookeeper-3.4.6.tar.gz, 解压: 配置conf/zoo.cf ...

  9. HTTP 和 HTTPS 直观上看哪里不一样了

    1. 我在自己搭建的 HTTP 网站上进行登陆测试 填写账号和密码,账号:123456 ,密码:654321 (当然是乱填的,只为了看传输数据) 点击登录,用wireshark抓包看看传输的数据 2. ...

  10. “数学口袋精灵”App的第二个Sprint计划----开发日记

    一.现状 在第一个sprint计划中,我们已经初步完成了“数学口袋精灵”App的基本框架,现在我们要继续完善app,使其功能更加强大,界面更加有趣. 二.任务认领 完成界面后的后续任务: 冯美欣:欢迎 ...