背景:
线上机器,需要过滤access日志,发送给另外一个API
期初是单进程,效率太低,改为多进程发送后,查看日志中偶尔会出现异常错误(忘记截图了。。。)
总之就是端口不够用了报错
原因:
每一条日志都是一次请求发送给API,短连接产生大量time_wait状态,占用了大量端口
这种高并发导致的大量time_wait状态内核调优基本是没用的,后来改为长连接解决问题
第一版短连接版本关键代码如下
因涉及具体业务信息,只贴出了关键部分代码
import pycurlwhere 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 requestsclIEnt=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
以上这篇详谈python http长连接客户端就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的详谈python http长连接客户端全部内容,希望文章能够帮你解决详谈python http长连接客户端所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)