题记

最近在用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使用心得相关推荐

  1. python官网怎么下载-python下载官网

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 1.下载pythonpython下载步骤:(1). 进入python下载官网:ht ...

  2. python下载官网-python下载官网

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 1.下载pythonpython下载步骤:(1). 进入python下载 ...

  3. python从官网安装库函数的方法;

    自述 安装库函数通常有两种办法 输入命令windows+R:打开cmd命令窗口,通过命令 pip install 包名 进行第三库安装,此方法简单快捷 但第一种方法有不好使的时候,这时候就需要从官网下 ...

  4. python numpy官网_Python Numpy 教程(上)

    ------------------------------------------------------------------------------------------------ 该教程 ...

  5. python docx官网_【记录】尝试用DocxyGen为Python代码生成文档

    [背景] 之前折腾技术的时候,或多或少,知道一个东西: DocxyGen 是用于从代码生成文档的. 最近,又从: -> 该地址无效,但是自己手动输入地址,而找到: 看到页面右下角,就显示了,此在 ...

  6. python的官网都打不开了-python打不开

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 问题原因:我之前装了python3,后来又装了python2,可能有些配置没有更改 ...

  7. 怎样下载python(官网)?

    官网网址: Download Python | Python.orghttps://www.python.org/downloads/接下来自己看吧

  8. python天气预报官网_python 实现对天气预报官网未来一周七天的天气情况抓取

    通过HTMLPaser和urlib模块对网页进行抓取并分析 实现步骤: 1.自定义MYHTMLParser类 2.实例化类并访问天气预报官网 3.抓取关键数据 4.对数据进行切片处理并输出字典 fro ...

  9. python requests的作用_requests session的作用

    requests库的session会话对象可以跨请求保持某些参数,说白了,就是比如你使用session成功的登录了某个网站,则在再次使用该session对象求求该网站的其他网页都会默认使用该sessi ...

最新文章

  1. Python学习笔记(随笔)
  2. 三年从前端小工到架构-知乎 Live 学习整理
  3. @description iPhoneX炫彩渐变背景实现
  4. 轨迹相似性度量之基于Hausdorff与LCSS的理解
  5. feign 第一次调用超时_feign + hystrix 降级
  6. WINDOWS8.1 安装 .NET35方法
  7. NoSQL和Redis简介及Redis在Windows下的安装和使用教程
  8. python 几何计算_计算几何-凸包算法 Python实现与Matlab动画演示
  9. apex创建快捷方式_盖伦下载的Origin平台、Apex游戏手动添加快捷方式
  10. 【评论送书】适合初学者的 6 个有趣的 R 语言项目
  11. coin3d核心类整理
  12. 20191122 视频版控制台上的极乐净土
  13. mmc驱动中的mmc_host结构体中rescan_disable变量的作用及使用
  14. 华为2019校招笔试-逻辑计算
  15. 全球顶尖互联网公司谷歌都在使用的Mono-Repo单体仓库
  16. 记一次失败的应聘实习经历
  17. 无主3局域网找不到服务器,无主之地3局域网模式设置方法攻略 无主之地3局域网怎么用...
  18. STC用PCA测量脉宽_超快激光脉冲测量和诊断使用自相关仪
  19. MySQL数据库——MySQL查看存储过程
  20. vue h5 腾讯地图路线规划

热门文章

  1. 10中文显示都是问号_CAD字体出现问号乱码的解决方法
  2. HOG和SIFT图像特征提取简述
  3. 双目立体匹配算法:Patch Match Stereo实用详解教程
  4. 基于感知能力的点云实例分割
  5. 直播回顾|基于格雷码结合相移技术的高鲁棒性高效率动态三维面形测量
  6. 多视图几何三维重建实战系列之MVSNet
  7. vc++向txt文件中写入数据,追加数据
  8. GraphNVP | 用于分子图生成的可逆流模型
  9. Ubuntu14.04 python 2.7环境下安装Scrapy
  10. Android 中几个常用的分析工具的下载地址