python-requests官网_requests使用心得
题记
最近在用requests写一些项目,遇见了一些问题,百度了很多,有些都不太好使,最后看了下requestsAPI文档,才明白了很多,最后项目趋于稳定。看来学东西还是API文档比较权威啊~
问题场景
项目需要通过一台主机搭上代理向目标服务器定时交换数据,主机上同时跑着比较占用资源的其他项目。
项目设计思路
因为主机上已经运行了比较占用线程内存资源的其他项目,所以计划本项目就应该在不能太占用资源,的前提下保持比较流畅的运行。
设计了在线程下加上定时器的思路,定时运行相关网络请求方法。
请求量 :每隔5秒钟,发送10 ~ 30个请求。
核心代码headers = {"Content-Type": "application/json;charset=uf8"}
url = config.baseurl + path
try:
response = requests.post(url, data= data, headers=headers ,stream= False,timeout= 10)
except Exception as indentfier:
time.sleep(5)
getLoaclObjs(False)
par = json.loads(data)
if response != None:
print(" method name = ", par["IPCType"],"\n sendData = ",json.dumps(par), "\n response.state.code = ",response.status_code,"\n response.text = ",response.text,"\n\n", url, "\n\n")
问题:
报错:HTTPConnectionPool(host='172.19.5.101', port=8085): Max retries exceeded with url: (Caused by ConnectTimeoutError(, 'Connection to timed out. (connect timeout=10)'))
分析:
报错的重点在于 connect timeout
解决方案
1.由于是timeout的报错,所以为了项目稳定首先要做的就是做好重连操作,在代码中其实已经做好了 try … except 中 except中为错误处理。再次调用了方法。
2.处理过后数据交互没有了毛病,但是报错仍然频繁,甚至后边有了新的错误:
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionAbortedError(10053, '你的主机中的软件中止了一个已建立的连接。', None, 10053, None))
度娘和overflow都告诉我添加一下代码:#设置重连次数
requests.adapters.DEFAULT_RETRIES = 15
# 设置连接活跃状态为False
s = requests.session()
s.keep_alive = False
基本上意思就是发出的网络请求比较频繁,requests内置的urllibs3不能及时的为我们断开连接,于是就有了以上报错。
代码的基本意思就是断开连接、增加重试次数。
headers = {"Content-Type": "application/json;charset=uf8"}
url = config.baseurl + path
try:
#设置重连次数
requests.adapters.DEFAULT_RETRIES = 15
# 设置连接活跃状态为False
s = requests.session()
s.keep_alive = False
response = requests.post(url, data= data, headers=headers ,stream= False,timeout= 10)
except Exception as indentfier:
time.sleep(5)
getLoaclObjs(False)
par = json.loads(data)
if response != None:
print(" method name = ", par["IPCType"],"\n sendData = ",json.dumps(par), "\n response.state.code = ",response.status_code,"\n response.text = ",response.text,"\n\n", url, "\n\n")
还有别的处理方法就是增加代理,由于主机是用代理的,所以项目换别的代理就不太现实,否则有可能直接连接不上目标服务器。
于是想到了直接管理内存,文档上是这么表述的:
好消息——归功于 urllib3,同一会话内的持久连接是完全自动处理的!同一会话内你发出的任何请求都会自动复用恰当的连接!
注意:只有所有的响应体数据被读取完毕连接才会被释放为连接池;所以确保将 stream 设置为 False 或读取 Response 对象的 content 属性。
也就是说除非stream=False或者response.content /response.text被操作,不然该请求不会被释放。
同其他的自动管理内存的语言一样,不论垃圾回收还是引用计数,都存在一个问题就是内存释放比较缓慢,于是我就在代码中手动关闭了连接。
headers = {'Content-Type': "application/json;charset=uf8"}
url = baseurl + path
response = None
try:
#设置重连次数
requests.adapters.DEFAULT_RETRIES = 5
s = requests.session()
# 设置连接活跃状态为False
s.keep_alive = False
response = requests.post(url, data=data, headers=headers,stream=False,timeout= 10)
# 关闭请求 释放内存
response.close()
del(response)
except Exception as indentfier:
time.sleep(5)
timer = threading.Timer(timerFlag, upload_position)
timer.start()
最终有效减少了报错次数。
__End ~
1.本站所有文章除特殊声明外均为原创,未经允许禁止转载!
2.站内文章如有侵权异议,请与我联系,我将在确实后处理!
python-requests官网_requests使用心得相关推荐
- python官网怎么下载-python下载官网
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 1.下载pythonpython下载步骤:(1). 进入python下载官网:ht ...
- python下载官网-python下载官网
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 1.下载pythonpython下载步骤:(1). 进入python下载 ...
- python从官网安装库函数的方法;
自述 安装库函数通常有两种办法 输入命令windows+R:打开cmd命令窗口,通过命令 pip install 包名 进行第三库安装,此方法简单快捷 但第一种方法有不好使的时候,这时候就需要从官网下 ...
- python numpy官网_Python Numpy 教程(上)
------------------------------------------------------------------------------------------------ 该教程 ...
- python docx官网_【记录】尝试用DocxyGen为Python代码生成文档
[背景] 之前折腾技术的时候,或多或少,知道一个东西: DocxyGen 是用于从代码生成文档的. 最近,又从: -> 该地址无效,但是自己手动输入地址,而找到: 看到页面右下角,就显示了,此在 ...
- python的官网都打不开了-python打不开
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 问题原因:我之前装了python3,后来又装了python2,可能有些配置没有更改 ...
- 怎样下载python(官网)?
官网网址: Download Python | Python.orghttps://www.python.org/downloads/接下来自己看吧
- python天气预报官网_python 实现对天气预报官网未来一周七天的天气情况抓取
通过HTMLPaser和urlib模块对网页进行抓取并分析 实现步骤: 1.自定义MYHTMLParser类 2.实例化类并访问天气预报官网 3.抓取关键数据 4.对数据进行切片处理并输出字典 fro ...
- python requests的作用_requests session的作用
requests库的session会话对象可以跨请求保持某些参数,说白了,就是比如你使用session成功的登录了某个网站,则在再次使用该session对象求求该网站的其他网页都会默认使用该sessi ...
最新文章
- Python学习笔记(随笔)
- 三年从前端小工到架构-知乎 Live 学习整理
- @description iPhoneX炫彩渐变背景实现
- 轨迹相似性度量之基于Hausdorff与LCSS的理解
- feign 第一次调用超时_feign + hystrix 降级
- WINDOWS8.1 安装 .NET35方法
- NoSQL和Redis简介及Redis在Windows下的安装和使用教程
- python 几何计算_计算几何-凸包算法 Python实现与Matlab动画演示
- apex创建快捷方式_盖伦下载的Origin平台、Apex游戏手动添加快捷方式
- 【评论送书】适合初学者的 6 个有趣的 R 语言项目
- coin3d核心类整理
- 20191122 视频版控制台上的极乐净土
- mmc驱动中的mmc_host结构体中rescan_disable变量的作用及使用
- 华为2019校招笔试-逻辑计算
- 全球顶尖互联网公司谷歌都在使用的Mono-Repo单体仓库
- 记一次失败的应聘实习经历
- 无主3局域网找不到服务器,无主之地3局域网模式设置方法攻略 无主之地3局域网怎么用...
- STC用PCA测量脉宽_超快激光脉冲测量和诊断使用自相关仪
- MySQL数据库——MySQL查看存储过程
- vue h5 腾讯地图路线规划