详谈python http长连接客户端
背景:
线上机器,需要过滤access日志,发送给另外一个api
期初是单进程,效率太低,改为多进程发送后,查看日志中偶尔会出现异常错误(忘记截图了。。。)
总之就是端口不够用了报错
原因:
每一条日志都是一次请求发送给api,短连接产生大量time_wait状态,占用了大量端口
这种高并发导致的大量time_wait状态内核调优基本是没用的,后来改为长连接解决问题
第一版短连接版本关键代码如下
因涉及具体业务信息,只贴出了关键部分代码
import pycurl where True: url=myqueue.get() send_msg=pycurl.Curl() send_msg.setopt(pycurl.URL,url) send_msg.perform() print send_msg.getinfo(send_msg.HTTP_CODE)
修改后长连接版本如下:
采用requests库
import requests client=requests.session() headers = {'Content-Type': 'application/json', 'Connection': 'keep-alive'} where True: url=myqueue.get() r=client.get(url,headers=headers) print r.status_code
相关推荐
wuychn 2020-08-16
guozewei0 2020-06-06
ITstudied 2020-05-27
TMD咯MySQL 2020-05-27
woniyu 2020-04-19
取个好名字真难 2020-03-06
步行者 2020-02-20
hygbuaa 2020-02-19
azhou 2020-02-02
snowguy 2020-01-29
mycosmos 2020-01-26
sofast 2019-12-25
明月清风精进不止 2019-12-20
jannal 2019-12-02
Lovexinyang 2019-11-17
帅性而为号 2015-08-19
liqing00 2016-07-20
lf0 2013-12-28
84487600 2019-11-03