详谈python http长连接客户端

yipeiwu_com5年前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已有一段时间了,下面针对python基础知识的使用做一完整梳理: 1)避免‘\n'等特殊字符的两种方式: a)利用转义字符‘\' b)利用原始字符‘r' prin...

将python运行结果保存至本地文件中的示例讲解

一、建立文件,保存数据 1.使用python中内置的open函数 打开txt文件 #mode 模式 #w 只能操作写入 r 只能读取 a 向文件追加 #w+ 可读可写 r+可读可写...

python3 批量获取对应端口服务的实例

思路懒得写了. 依赖python-nmap,先在电脑上装nmap,不然用不了.openpyxl实际上没有用到,可以不安装. makeEx()没用到,懒得删了. #依赖python-n...

详解numpy的argmax的具体使用

从最简单的例子出发 假定现在有一个数组a = [3, 1, 2, 4, 6, 1]现在要算数组a中最大数的索引是多少.这个问题对于刚学编程的同学就能解决.最直接的思路,先假定第0个数最大...

python的内存管理和垃圾回收机制详解

python的内存管理和垃圾回收机制详解

 简单来说python的内存管理机制有三种 1)引用计数 2)垃圾回收 3)内存池 接下来我们来详细讲解这三种管理机制 1,引用计数: 引用计数是一种非常高效的内存管理手段,当...