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

yipeiwu_com6年前Python基础

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松散正则表达式用法分析

本文实例讲述了Python松散正则表达式用法。分享给大家供大家参考,具体如下: Python 允许用户利用所谓的 松散正则表达式来完成这个任务。一个松散正则表达式和一个紧凑正则表达式主要...

python 整数越界问题详解

python 内部自带大整数运算能力,整数运算不会溢出,只要内存足够,就oK 下面的例子演示了两个32位整数加法的情况(通过位运算实现),为了模拟溢出的效果,必须人工的进行位运算,~运算...

Python自定义装饰器原理与用法实例分析

本文实例讲述了Python自定义装饰器原理与用法。分享给大家供大家参考,具体如下: 什么是装饰器?装饰器本质是一个函数,它可以在不改变原来的函数的基础上额外的增加一些功能。如常见的@cl...

Python获取网页上图片下载地址的方法

本文实例讲述了Python获取网页上图片下载地址的方法。分享给大家供大家参考。具体如下: 这里获取网页上图片的下载地址是正在写的数据采集中的一段,代码如下: 复制代码 代码如下:#!/u...

Python for Informatics 第11章之正则表达式(二)

注:以下文章原文来自于Dr Charles Severance 的 《Python for Informatics》 11.1 正则表达式的字符匹配   我们可以用许多其它的特殊字符...