详谈python http长连接客户端

yipeiwu_com6年前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设计】。

相关文章

pygame实现五子棋游戏

pygame实现五子棋游戏

本文实例为大家分享了pygame五子棋游戏的具体代码,供大家参考,具体内容如下 1.设置棋盘 五子棋标准棋盘是15x15的,如果我们每个格子的大小是40x40的话,棋盘应该是40x(15...

Python编程实现输入某年某月某日计算出这一天是该年第几天的方法

本文实例讲述了Python编程实现输入某年某月某日计算出这一天是该年第几天的方法。分享给大家供大家参考,具体如下: #基于 Python3 一种做法: def is_lea...

详解python statistics模块及函数用法

本节介绍 Python 中的另一个常用模块 —— statistics模块,该模块提供了用于计算数字数据的数理统计量的函数。它包含了很多函数,具体如下表:...

python程序 创建多线程过程详解

一、python线程的模块 1.1 thread和threading模块 thread模块提供了基本的线程和锁的支持 threading提供了更高级别、功能更强的线程管理的功能。...

python变量不能以数字打头详解

在编写python函数时,无意中发现一个问题:python中的变量不能以数字打头,以下函数中定义了一个变量3_num_varchar,执行时报错。 函数如下: def databas...