文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python Pycurl 库 ——

2023-01-31 06:04

关注

    经常使用基调网络的同学,可能对基调网络对页面元素的性能展示感觉很好。它可以做到对一条URL做详细的检测,包括:阻塞时间、DNS解析时间、建立连接时间、SSL握手时间、发出请求时间、首包时间等。

    wKiom1Psec_iceBrAAGpCF7Ygqw296.jpg

    其实,我们也可以做到。比如Python pycurl 库就可以做到对数据的收集,然后可以对收集的数据写入redis或者Mysql。最后前端使用echars通过图形的形式进行展示出来。

    

wKioL1PsfN7Dk1JqAAGGmOAYRYc068.jpg

wKiom1Pse8bg6o5mAADIBgSmR6g461.jpg

    echars是百度一个开源项目,功能很强大(项目URL:http://echarts.baidu.com)可以将数据通过各种图形的形式展现出来。

    

使用Pycurl 监测指定站点相关系能

    Pycurl是个用C语言实现的python库,Pycurl可以用来获取指定URL的响应对象。它支持的协议很多,如:FTP、FTPS、HTTP、HTTPS、TELNET等。

    可以使用Pycurl库编写的脚本放到不同地区的CDN节点上,通过Crond Job或者守护进程的方式,在该节点测试指定站点,然后将测试结果通过RPC或者Http方式发送到服务端写入redis或Mysql,最后通过前端页面展现出来。

#!/usr/bin/env python

import pycurl
import sys
import json

WEB_SITES = sys.argv[1]

def main():
    c = pycurl.Curl()
    c.setopt(pycurl.URL, WEB_SITES)                                #设置session
    c.setopt(pycurl.FOLLOWLOCATION, 1)
    content = c.perform()                                           #执行传输动作
    dns_time = c.getinfo(pycurl.NAMELOOKUP_TIME)                    #DNS 建连时间
    conn_time = c.getinfo(pycurl.CONNECT_TIME)                      #TCP/IP 三次握手时间
    starttransfer_time = c.getinfo(pycurl.STARTTRANSFER_TIME)       #首包时间
    total_time = c.getinfo(pycurl.TOTAL_TIME)                       #上一请求的总时间
    http_code = c.getinfo(pycurl.HTTP_CODE)                         #HTTP响应代码
    redirect_count = c.getinfo(pycurl.REDIRECT_COUNT)               #重定向次数
    size_upload = c.getinfo(pycurl.SIZE_UPLOAD)                     #上传字节大小
    size_download = c.getinfo(pycurl.SIZE_DOWNLOAD)                 #下载字节大小
    header_size = c.getinfo(pycurl.HEADER_SIZE)                     #头部大小
    request_size = c.getinfo(pycurl.REQUEST_SIZE)                   #请求大小
    content_type = c.getinfo(pycurl.CONTENT_TYPE)                   #请求内容类型
    c.close()                                                      #关闭处理Curl的session
    data = json.dumps({'dns_time':dns_time,         
                      'conn_time':conn_time,        
                      'starttransfer_time':starttransfer_time,    
                      'total_time':total_time,
                      'http_code':http_code,
                      'redirect_count':redirect_count,
                      'size_upload':size_upload,
                      'size_download':size_download,
                      'header_size':header_size,
                      'request_size':request_size,
                      'content_type':content_type})
    return data

if __name__ == "__main__":
    print main()

 

该脚本执行结果如下:

       wKioL1Psg5OCHEy1AAFTfFKX0cY435.jpg    

除了上面脚本使用的一些相应信息外,Pycurl还支持很多响应信息:

    pycurl.PRETRANSFER_TIME           #建立连接后到开始传输的时间

    pycurl.REDIRECT_TIME              #如果存在跳转,所花费的时间

    pycurl.SPEED_UPLOAD               #上传速度

    pycurl.CONTENT_LENGTH_DOWNLOAD    #下载内容长度

    pycurl.CONTENT_LENGTH_UPLOAD      #上传内容的长度

    pycurl.SPEED_DOWNLOAD             #下载速度

    pycurl.INFO_FILETIME              #文件的时间信息

    Pycurl.HTTP_CONNECTCODE           #HTTP连接代码

    

    这样,各地区Cache节点就可以跑起来了,可以通过RPC或者其他方式将获取的数据传到服务端。最后通过前端页面渲染出来就ok了。由于我们单位买了基调的服务,所以我就没有写前端的页面,如果哪位需要的话,可以搞一下。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯