最近新功能上线,帮忙加了几个监控脚本。上次用的perl,语法太随意了,看起来很是不整洁,自己写的都觉得不好,更不要说给别人看。好久没用python了,反正这次准备使用新的监控设计方案,刚好换一下。

用perl写的是第一次做监控脚本,什么都不知道,看着别人的逻辑来写。觉得不是很好,一个脚本只监控一个功能,太多的重复工作和体力劳动,布置、统计也不方便。这次把它们都集中到一起,并抽象出黑箱监控的一些参数,一套东东搞定。其实逻辑很简单,就像下图所示。

麻烦的地方在于,以前是用socket做通信,这次为了方便,直接用python的库去做request。前后用了urllib2,httplib,httplib2。

urllib2在我的机器上建立连接用了1秒钟,要知道我用浏览器去访问总时间也不过几百ms(包括加载图片、CSS、JS等)。监控用的那台机python还是2.4,没有超时设置接口,用了一个计时器在超时的时候做close并在代码里捕获异常。最后还是因为太慢,转用httplib。

httplib建立一个就很快了,不过做request和read还是慢,要比浏览器慢上200到300ms。一样没有超时设置,发现httplib的read在开始的时候如果发现文件被关闭的话会返回长度为0的字符串,这个不是我所要的。自己去修改它的代码,加上了超时设置并在read的时候加上了异常。基本可以用,不过还是觉得在read的时候比较慢,估计是一些内存拷贝的算法太差。

实在受不了这种慢动作。用perl写的一个脚本实现同样功能要比这个快得多,后来找到一个httplib2,感觉对HTTP的支持要完善得多,另外也可以做超时设置(但似乎在read开始后就无效?)。

我的机器环境比较慢一点,三个库做同一个request所用的时间大概是:

urllib2 1.2s

httplib 800ms

httplib2 400ms

总结:

1)虽然python 2.4相同逻辑比perl慢,但因为代码风格比较好控制,后续还是尽量考虑使用python

2)不同的库实现不同,用python的时候注意在比较慢的情况下考虑使用其他库。

python网络库_python的网络库相关推荐

  1. python自动化库_Python自动化测试常用库整理

    基本库: sys 程序和Python解析器的交互 os 启动新进程:操作文件和目录 re 正则表达式,字符串匹配 string 基本字符串操作 inspect 提供自省和反射功能 importlib ...

  2. python自动化测试常用库_Python自动化测试常用库整理

    今天花了一些时间,过了一下这几年自己用Python开发的自动化测试框架,然后将其中常用到Python库抽出来,简单整理了一下它们的用处.我觉得,只要掌握了这些常用的Python库,足以应对大多数自动化 ...

  3. 自动化测试常用python库_Python自动化测试常用库

    基本库: sys 程序和Python解析器的交互 os 启动新进程:操作文件和目录 re 正则表达式,字符串匹配 string 基本字符串操作 inspect 提供自省和反射功能 importlib ...

  4. python数据科学库_Python数据科学库

    python数据科学库 什么是数据科学? (What is Data Science?) We live in an information age, where the challenge is t ...

  5. python 3d库_python的3d库

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我正在寻找一个3d数学库在python或python绑定. 它需要处理旋转,平移 ...

  6. python加密库_python基于pyDes库实现des加密的方法

    本文实例讲述了python基于pyDes库实现des加密的方法.分享给大家供大家参考,具体如下: 下载及简介地址:https://twhiteman.netfirms.com/des.html 如需要 ...

  7. time库是python中处理时间的标准库_python语言time库和datetime库基本使用详解

    今天是边复习边创作博客的第三天,我今年大二,我们专业开的有这门课程,因为喜欢所以更加认真学习,本以为没人看呢,看了后台浏览量让我更加认真创作,这篇博客花了2个半小时的时间,结合自己所学,所思,所想写作 ...

  8. python怎么用第三方库_python中第三方库的下载方法

    1.最常用:在命令行中输入  pip install "库名称"  例如 pip install gensim 查看pip的命令集: pip uninstall "库名& ...

  9. python turtle用法_Python初学者Turtle库简介

    Python是一种基于文本的编程语言.为了使中小学生掌握这种语言,Turtle库(Turtle Library)是一个很好的起点.Turtle库是可用于创建插图和游戏的命令的集合. 什么是Python ...

  10. python 股票分析常用库_Python数据分析常用库有哪些?Python学习!

    Python为什么受欢迎?因为Python简单.易懂.好用,是一门高级的编程语言;除此之外,Python提供了大量的第三方库,开箱即用,方便.免费,非常适合从事数据分析领域的工作. 大家也都知道,Py ...

最新文章

  1. 生物信息学就是从统计和CS的community里借鉴合适的方法
  2. 文件分割 合并 小软件 呵呵
  3. boost::core实现交换std::type_info
  4. Java内存模型解析
  5. linux事务隔离级别,事务的隔离级别(Transaction isolation levels)2
  6. XEIM 配置程序源代码
  7. Go: 清空 Slice 的两种方法:[:0]和nil
  8. 【报告分享】2021年中国人工智能与教育融合应用报告.pdf(附下载链接)
  9. 什么叫做支路_家庭电路用什么开关?不同的开关有什么用?主开关用漏保更好吗?...
  10. uva297(quadtree)
  11. FineReport制作报表讲解(基本操作以及网络报表)
  12. 北京地标《信息化项目软件开发费用测算规范》完成公开征求意见
  13. kali 解压rar
  14. 【ICML2018】63篇强化学习论文全解读
  15. Vue学习之Vant图标使用及问题
  16. 极速office(PPT)如何设置幻灯片大小
  17. FlEAPHP + Smarty 进行php开发
  18. 设计模式(三)- 责任链模式
  19. 如何安装VMware Tool
  20. ALTERA CPLD离线烧写方案设计(MCU模拟JTAG)

热门文章

  1. 使用Terraform创建托管版Kubernetes
  2. 五位专家跟你讲讲为啥Python更适合做AI/机器学习
  3. 众安每秒3.2万张保单的背后,阿里云输出了什么能力?
  4. 移动云亮相 2021 IDC 年度盛典 共话变革与赋能
  5. Python开发之:Django基于Docker实现Mysql数据库读写分离、集群、主从同步详解 | 原力计划...
  6. 云+X案例展 | 金融类:七牛云Pandora 助阵某银行实现日志智能管理
  7. H5 微信公众号 授权登录 前后端分离篇(后端02)
  8. Vue3.x 使用ref和reactive、toRef
  9. String 常用API
  10. SwitchHosts提示切换hosts失败!没有修改'C:\WINDOWS\system32\drivers\etc\hosts'的权限问题