测试网站页面网速的一个简单Python脚本

无聊之余,下面分享一个Python小脚本:测试网站页面访问速度

[root@huanqiu ~]# vim pywww.py
#!/usr/bin/python
# coding: UTF-8
import StringIO,pycurl,sys,os,time

class idctest:
    def __init__(self):
          self.contents = ''
    def body_callback(self,buf):
          self.contents = self.contents + buf

def test_gzip(input_url):
    t = idctest()
    #gzip_test = file("gzip_test.txt", 'w')
    c = pycurl.Curl()
    c.setopt(pycurl.WRITEFUNCTION,t.body_callback)
    c.setopt(pycurl.ENCODING, 'gzip')
    c.setopt(pycurl.URL,input_url)
    c.setopt(pycurl.MAXREDIRS, 5)
    c.perform()

    http_code = c.getinfo(pycurl.HTTP_CODE)
    dns_resolve = c.getinfo(pycurl.NAMELOOKUP_TIME)
    http_conn_time = c.getinfo(pycurl.CONNECT_TIME)
    http_pre_trans = c.getinfo(pycurl.PRETRANSFER_TIME)
    http_start_trans = c.getinfo(pycurl.STARTTRANSFER_TIME)
    http_total_time = c.getinfo(pycurl.TOTAL_TIME)
    http_size_download = c.getinfo(pycurl.SIZE_DOWNLOAD)
    http_header_size = c.getinfo(pycurl.HEADER_SIZE)
    http_speed_downlaod = c.getinfo(pycurl.SPEED_DOWNLOAD)

    print 'HTTP响应状态: %d' %http_code
    print 'DNS解析时间:%.2f ms' %(dns_resolve*1000)
    print '建立连接时间: %.2f ms' %(http_conn_time*1000)
    print '准备传输时间: %.2f ms' %(http_pre_trans*1000)
    print "传输开始时间: %.2f ms" %(http_start_trans*1000)
    print "传输结束时间: %.2f ms" %(http_total_time*1000)
    print "下载数据包大小: %d bytes/s" %http_size_download
    print "HTTP头大小: %d bytes/s" %http_header_size
    print "平均下载速度: %d k/s" %(http_speed_downlaod/1024)

if __name__ == '__main__':
   input_url = sys.argv[1]
   test_gzip(input_url)

赋予脚本执行权限

[root@huanqiu ~]# chmod 755 pywww.py 

测试网页,比如www.huanqiu.com

[root@huanqiu ~]# python pywww.py www.huanqiu.com
HTTP响应状态: 200
DNS解析时间:2.56 ms
建立连接时间: 4.92 ms
准备传输时间: 4.93 ms
传输开始时间: 13.08 ms
传输结束时间: 17.71 ms
下载数据包大小: 40101 bytes/s
HTTP头大小: 356 bytes/s
平均下载速度: 2210 k/s

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏加米谷大数据

如何避免HBase写入过快引起的各种问题

client api ==> RPC ==> server IPC ==> RPC queue ==> RPC handler ==> write WAL ==...

1062
来自专栏FreeBuf

为什么要禁止除GET和POST之外的HTTP方法?

HTTP1.1新增了五种请求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT

1566
来自专栏北京马哥教育

解决DNS污染与劫持之使用特殊DNS端口

os:ubuntu 12.04 LTS 软件:dnsmasq dns测试: dig www.facebook.com @8.8.8.8 +short 37....

7934
来自专栏王亚昌的专栏

UNIX编程艺术之“多道程序设计”

    多道程序设计的主旨是“只做一件事并且做好”,这个主旨自始至终贯穿本章,文中举了管道、more命令,来说明,unix命令功能的单一性以及进程间如何进行通信...

882
来自专栏CSDN技术头条

自动化模式中的MySQL

原文:MySQL on Autopilot 作者:Tim Gross 翻译:孙薇 自动化模式(Autopilot Pattern)是一种设计应用与基础架构的方式...

2545
来自专栏JAVA高级架构开发

浅谈Nginx服务器的内部核心架构设计!

Nginx---Ngine X,是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;Nginx以...

3140
来自专栏idba

supervisor 工具介绍

supervisor 是一款基于Python的进程管理工具,可以很方便的管理服务器上部署的应用程序。supervisor的功能如下:

771
来自专栏开源优测

Linux下常用的监控工具和命令

如果性能测试的目标服务器是linux系统,在如何使用linux自带的命令来实现性能测试过程的监控分析呢?

1382
来自专栏生信小驿站

R.python常见问题②(一些需要编译的包)

在R语言的广泛包中,大部分可以直接install.packages()直接命令安装,但是有些包安装过程比较复杂,例如'lightgbm,ggplot2所依赖的‘...

1072
来自专栏微信公众号:Java团长

Java程序员必备的Intellij插件

地址:https://plugins.jetbrains.com/plugin/7495--ignore

941

扫码关注云+社区

领取腾讯云代金券