详谈python http长连接客户端

yipeiwu_com7年前Python基础

背景:

线上机器,需要过滤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

以上这篇详谈python http长连接客户端就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python如何派生内置不可变类型并修改实例化行为

本文实例为大家分享了python派生内置不可变类型并修改实例化行为的具体代码,供大家参考,具体内容如下 案例:   我们想要自定义新类型的元组,对传入的可迭代对象我们只保留其中的int类...

Python代码生成视频的缩略图的实例讲解

Reddit 上目前充斥着各种机器人账号,官方也非常支持这种行为,只要不是无意义的发言,机器人多了还能增加活跃度,吸引真人用户一起来各抒己见,比如说每周都有的一个“烦人的星期二”的帖子,...

Python多层嵌套list的递归处理方法(推荐)

问题:用Python处理一个多层嵌套list ['and', 'B', ['not', 'A'],[1,2,1,[2,1],[1,1,[2,2,1]]], ['not', 'A',...

Python线性方程组求解运算示例

Python线性方程组求解运算示例

本文实例讲述了Python线性方程组求解运算。分享给大家供大家参考,具体如下: 求解线性方程组比较简单,只需要用到一个函数(scipy.linalg.solve)就可以了。比如我们要求以...

Python自动调用IE打开某个网站的方法

本文实例讲述了Python自动调用IE打开某个网站的方法。分享给大家供大家参考。具体实现方法如下: import win32gui import win32com import...