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 相关文章推荐
深入理解NumPy简明教程---数组2
Dec 17 Python
python实现按任意键继续执行程序
Dec 30 Python
开源软件包和环境管理系统Anaconda的安装使用
Sep 04 Python
Python语言描述机器学习之Logistic回归算法
Dec 21 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
在cmd命令行里进入和退出Python程序的方法
May 12 Python
Python爬虫之pandas基本安装与使用方法示例
Aug 08 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
Python3 关于pycharm自动导入包快捷设置的方法
Jan 16 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 19 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
如何提高MYSQL数据库的查询统计速度 select 索引应用
2007/04/11 PHP
php 应用程序安全防范技术研究
2009/09/25 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
微信公众平台之快递查询功能用法实例
2015/04/14 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
总结十个Angular.js由浅入深的面试问题
2016/08/26 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
自荐信模版
2013/10/24 职场文书
院系推荐意见
2015/06/05 职场文书
python实现简单倒计时功能
2021/04/21 Python
MySQL如何构建数据表索引
2021/05/13 MySQL
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
Centos环境下Postgresql 安装配置及环境变量配置技巧
2021/05/18 PostgreSQL
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android