python的网络库

    最近新功能上线,帮忙加了几个监控脚本。上次用的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的时候注意在比较慢的情况下考虑使用其他库。

转载于:https://www.cnblogs.com/sunyongyue/archive/2010/12/07/1899528.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值