python自动重试第三方包retrying模块的方法


Posted in Python onApril 24, 2018

retrying是一个python的重试包,可以用来自动重试一些可能运行失败的程序段,retrying提供一个装饰器函数retry,被装饰的函数就会在运行失败的情况下重新执行,默认只要一直报错就会不断重试。

最近写了一个爬虫,需要连接国外的一个网站,经常出现掉线的情况,自己写了一个自动重连的代码,但感觉不够简洁。。。

后来就上万能的github,找到了一个第三包,基本能满足我的要求。这个第三方包就是retrying.

我的需求就是每当出现request相关异常的时候,就自动重来,上限连接10次;使用代码如下:

from retrying import retry 
def is_request_exception(e):
   return issubclass(type(e),RequestException)
 @retry(retry_on_exception=is_request_exception,wrap_exception=False, stop_max_attempt_number=10)
 def request_get(url, timeout=120):
   return requests.get(url, timeout=120)

刚开始用的时候,也遇到一些坑,就是在request_get用了try..except,导致不成功。后来删除就可以了。。。

我理解,在retring包中,已经有exception处理了,如果你的代码中有了exception处理,retring就没有捕获异常,就没法达到期望的结果了。

retrying还有非常多的自定义参数,如果等待时长控制,总共等待时间控制等等,暂时还没有这么特别的要求,等需要的时候,我再去研究一下。

总结

以上所述是小编给大家介绍的python自动重试第三方包retrying模块的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python异步任务队列示例
Apr 01 Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 Python
解决python使用open打开文件中文乱码的问题
Dec 29 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
Aug 07 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
python多进程使用函数封装实例
May 02 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 Python
Python日志器使用方法及原理解析
Sep 27 Python
python3+PyQt5泛型委托详解
Apr 24 #Python
python去除扩展名的实例讲解
Apr 23 #Python
python3 遍历删除特定后缀名文件的方法
Apr 23 #Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 #Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 #Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 #Python
Tensorflow之Saver的用法详解
Apr 23 #Python
You might like
PHP用mysql数据库存储session的代码
2010/03/05 PHP
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php简单判断文本编码的方法
2015/07/30 PHP
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
js的回调函数详解
2015/01/05 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
JS实现选中当前菜单后高亮显示的导航条效果
2015/10/15 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
vue集成百度UEditor富文本编辑器使用教程
2018/09/21 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
Python中列表(list)操作方法汇总
2014/08/18 Python
Python迭代器和生成器介绍
2015/03/06 Python
python 链接和操作 memcache方法
2017/03/04 Python
python的socket编程入门
2018/01/29 Python
python写入已存在的excel数据实例
2018/05/03 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
Python实现操纵控制windows注册表的方法分析
2019/05/24 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
爱我中华教学反思
2014/04/28 职场文书
生活小常识广播稿
2015/08/19 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers
netty 实现tomcat的示例代码
2022/06/05 Servers