Python3 异常失败重试模块,retrying,python3 爬虫必需利器

感谢做者分享-http://bjbsair.com/2020-04-07...html

图/文:迷神python

从以前写的 【Python登录小米路由器拨号更换IP,绕过网站反爬IP限制机制】咱们就能够看到python有一种重试机制,很好用。特别是在写爬虫的时候,简直是python爬虫必备利器。python爬虫

工做中也常常碰到的问题就是,某个方法出现了异常,重试几回。循环重复一个方法是很常见的。好比爬虫中的获取代理,对获取失败的状况进行重试。或者是python爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。dom

Python异常失败重试模块:retrying,python爬虫必备利器

人生苦短啊函数

安装retrying模块

pip install retrying #安装

retrying提供一个装饰器函数retry,被装饰的函数会在运行失败的状况下从新执行,默认一直报错就一直重试。咱们先看下咱们以前的一段代码:网站

from retrying import retry  
@retry(stop_max_attempt_number=50000,wait_fixed=2000)  
def tyc():  
    #代码  
      
if __name__ == '__main__':  
    tyc()

这个里面retry的装饰器,有2个参数,stop_max_attempt_number 表明最大重试次数,wait_fixed 代码,间隔多久进行重试。spa

retry经常使用参数相关

他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:代理

# 设置方法的最大延迟时间,默认为100毫秒(是执行这个方法重试的总时间)  
@retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法执行之间的等待时间  
@retry(stop_max_attempt_number=5,wait_fixed=2000)  
# 随机的等待时间  
@retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000)  
# 每调用一次增长固定时长  
@retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)

其余的还有参数:code

一、 stop_max_attempt_number 在中止以前尝试的最大次数,最后一次若是仍是有异常则会抛出异常,中止运行

二、stop_max_delay 最大延迟时间htm

三、wait_fixed:两次调用方法期间停留时长,默认1000毫秒,1秒

四、wait_random_min:在两次调用方法停留时长,停留最短期,默认为0

五、wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

六、wait_incrementing_increment:每调用一次则会增长的时长,默认 100毫秒

七、wait_exponential_multiplierwait_exponential_max:以指数的形式产生两次retrying之间的停留时间,产生的值为2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已经retry的次数,若是产生的这个值超过了wait_exponential_max的大小,那么以后两个retrying之间的停留值都为wait_exponential_max

八、retry_on_exception: 指定一个函数,若是此函数返回指定异常,则会重试,若是不是指定的异常则会退出

九、retry_on_result:指定一个函数,若是指定的函数返回True,则重试,不然抛出异常退出

使用比较简单,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 这两个。其余还有一些,你们能够去参考文档。

好了,就这么多啦,我是迷神,更多精彩,记得关注我哦,请多多转发,有问题也能够评论哦。感谢做者分享-http://bjbsair.com/2020-04-07...

图/文:迷神

从以前写的 【Python登录小米路由器拨号更换IP,绕过网站反爬IP限制机制】咱们就能够看到python有一种重试机制,很好用。特别是在写爬虫的时候,简直是python爬虫必备利器。

工做中也常常碰到的问题就是,某个方法出现了异常,重试几回。循环重复一个方法是很常见的。好比爬虫中的获取代理,对获取失败的状况进行重试。或者是python爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。

Python异常失败重试模块:retrying,python爬虫必备利器

人生苦短啊

安装retrying模块

pip install retrying #安装

retrying提供一个装饰器函数retry,被装饰的函数会在运行失败的状况下从新执行,默认一直报错就一直重试。咱们先看下咱们以前的一段代码:

from retrying import retry  
@retry(stop_max_attempt_number=50000,wait_fixed=2000)  
def tyc():  
    #代码  
      
if __name__ == '__main__':  
    tyc()

这个里面retry的装饰器,有2个参数,stop_max_attempt_number 表明最大重试次数,wait_fixed 代码,间隔多久进行重试。

retry经常使用参数相关

他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:

# 设置方法的最大延迟时间,默认为100毫秒(是执行这个方法重试的总时间)  
@retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法执行之间的等待时间  
@retry(stop_max_attempt_number=5,wait_fixed=2000)  
# 随机的等待时间  
@retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000)  
# 每调用一次增长固定时长  
@retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)

其余的还有参数:

一、 stop_max_attempt_number 在中止以前尝试的最大次数,最后一次若是仍是有异常则会抛出异常,中止运行

二、stop_max_delay 最大延迟时间

三、wait_fixed:两次调用方法期间停留时长,默认1000毫秒,1秒

四、wait_random_min:在两次调用方法停留时长,停留最短期,默认为0

五、wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

六、wait_incrementing_increment:每调用一次则会增长的时长,默认 100毫秒

七、wait_exponential_multiplierwait_exponential_max:以指数的形式产生两次retrying之间的停留时间,产生的值为2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已经retry的次数,若是产生的这个值超过了wait_exponential_max的大小,那么以后两个retrying之间的停留值都为wait_exponential_max

八、retry_on_exception: 指定一个函数,若是此函数返回指定异常,则会重试,若是不是指定的异常则会退出

九、retry_on_result:指定一个函数,若是指定的函数返回True,则重试,不然抛出异常退出

使用比较简单,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 这两个。其余还有一些,你们能够去参考文档。

好了,就这么多啦,我是迷神,更多精彩,记得关注我哦,请多多转发,有问题也能够评论哦。感谢做者分享-http://bjbsair.com/2020-04-07...

图/文:迷神

从以前写的 【Python登录小米路由器拨号更换IP,绕过网站反爬IP限制机制】咱们就能够看到python有一种重试机制,很好用。特别是在写爬虫的时候,简直是python爬虫必备利器。

工做中也常常碰到的问题就是,某个方法出现了异常,重试几回。循环重复一个方法是很常见的。好比爬虫中的获取代理,对获取失败的状况进行重试。或者是python爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。

Python异常失败重试模块:retrying,python爬虫必备利器

人生苦短啊

安装retrying模块

pip install retrying #安装

retrying提供一个装饰器函数retry,被装饰的函数会在运行失败的状况下从新执行,默认一直报错就一直重试。咱们先看下咱们以前的一段代码:

from retrying import retry  
@retry(stop_max_attempt_number=50000,wait_fixed=2000)  
def tyc():  
    #代码  
      
if __name__ == '__main__':  
    tyc()

这个里面retry的装饰器,有2个参数,stop_max_attempt_number 表明最大重试次数,wait_fixed 代码,间隔多久进行重试。

retry经常使用参数相关

他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:

# 设置方法的最大延迟时间,默认为100毫秒(是执行这个方法重试的总时间)  
@retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法执行之间的等待时间  
@retry(stop_max_attempt_number=5,wait_fixed=2000)  
# 随机的等待时间  
@retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000)  
# 每调用一次增长固定时长  
@retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)

其余的还有参数:

一、 stop_max_attempt_number 在中止以前尝试的最大次数,最后一次若是仍是有异常则会抛出异常,中止运行

二、stop_max_delay 最大延迟时间

三、wait_fixed:两次调用方法期间停留时长,默认1000毫秒,1秒

四、wait_random_min:在两次调用方法停留时长,停留最短期,默认为0

五、wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

六、wait_incrementing_increment:每调用一次则会增长的时长,默认 100毫秒

七、wait_exponential_multiplierwait_exponential_max:以指数的形式产生两次retrying之间的停留时间,产生的值为2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已经retry的次数,若是产生的这个值超过了wait_exponential_max的大小,那么以后两个retrying之间的停留值都为wait_exponential_max

八、retry_on_exception: 指定一个函数,若是此函数返回指定异常,则会重试,若是不是指定的异常则会退出

九、retry_on_result:指定一个函数,若是指定的函数返回True,则重试,不然抛出异常退出

使用比较简单,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 这两个。其余还有一些,你们能够去参考文档。

好了,就这么多啦,我是迷神,更多精彩,记得关注我哦,请多多转发,有问题也能够评论哦。感谢做者分享-http://bjbsair.com/2020-04-07...

图/文:迷神

从以前写的 【Python登录小米路由器拨号更换IP,绕过网站反爬IP限制机制】咱们就能够看到python有一种重试机制,很好用。特别是在写爬虫的时候,简直是python爬虫必备利器。

工做中也常常碰到的问题就是,某个方法出现了异常,重试几回。循环重复一个方法是很常见的。好比爬虫中的获取代理,对获取失败的状况进行重试。或者是python爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。

Python异常失败重试模块:retrying,python爬虫必备利器

人生苦短啊

安装retrying模块

pip install retrying #安装

retrying提供一个装饰器函数retry,被装饰的函数会在运行失败的状况下从新执行,默认一直报错就一直重试。咱们先看下咱们以前的一段代码:

from retrying import retry  
@retry(stop_max_attempt_number=50000,wait_fixed=2000)  
def tyc():  
    #代码  
      
if __name__ == '__main__':  
    tyc()

这个里面retry的装饰器,有2个参数,stop_max_attempt_number 表明最大重试次数,wait_fixed 代码,间隔多久进行重试。

retry经常使用参数相关

他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:

# 设置方法的最大延迟时间,默认为100毫秒(是执行这个方法重试的总时间)  
@retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法执行之间的等待时间  
@retry(stop_max_attempt_number=5,wait_fixed=2000)  
# 随机的等待时间  
@retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000)  
# 每调用一次增长固定时长  
@retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)

其余的还有参数:

一、 stop_max_attempt_number 在中止以前尝试的最大次数,最后一次若是仍是有异常则会抛出异常,中止运行

二、stop_max_delay 最大延迟时间

三、wait_fixed:两次调用方法期间停留时长,默认1000毫秒,1秒

四、wait_random_min:在两次调用方法停留时长,停留最短期,默认为0

五、wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

六、wait_incrementing_increment:每调用一次则会增长的时长,默认 100毫秒

七、wait_exponential_multiplierwait_exponential_max:以指数的形式产生两次retrying之间的停留时间,产生的值为2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已经retry的次数,若是产生的这个值超过了wait_exponential_max的大小,那么以后两个retrying之间的停留值都为wait_exponential_max

八、retry_on_exception: 指定一个函数,若是此函数返回指定异常,则会重试,若是不是指定的异常则会退出

九、retry_on_result:指定一个函数,若是指定的函数返回True,则重试,不然抛出异常退出

使用比较简单,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 这两个。其余还有一些,你们能够去参考文档。

好了,就这么多啦,我是迷神,更多精彩,记得关注我哦,请多多转发,有问题也能够评论哦。感谢做者分享-http://bjbsair.com/2020-04-07...

图/文:迷神

从以前写的 【Python登录小米路由器拨号更换IP,绕过网站反爬IP限制机制】咱们就能够看到python有一种重试机制,很好用。特别是在写爬虫的时候,简直是python爬虫必备利器。

工做中也常常碰到的问题就是,某个方法出现了异常,重试几回。循环重复一个方法是很常见的。好比爬虫中的获取代理,对获取失败的状况进行重试。或者是python爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。

Python异常失败重试模块:retrying,python爬虫必备利器

人生苦短啊

安装retrying模块

pip install retrying #安装

retrying提供一个装饰器函数retry,被装饰的函数会在运行失败的状况下从新执行,默认一直报错就一直重试。咱们先看下咱们以前的一段代码:

from retrying import retry  
@retry(stop_max_attempt_number=50000,wait_fixed=2000)  
def tyc():  
    #代码  
      
if __name__ == '__main__':  
    tyc()

这个里面retry的装饰器,有2个参数,stop_max_attempt_number 表明最大重试次数,wait_fixed 代码,间隔多久进行重试。

retry经常使用参数相关

他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:

# 设置方法的最大延迟时间,默认为100毫秒(是执行这个方法重试的总时间)  
@retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法执行之间的等待时间  
@retry(stop_max_attempt_number=5,wait_fixed=2000)  
# 随机的等待时间  
@retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000)  
# 每调用一次增长固定时长  
@retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)

其余的还有参数:

一、 stop_max_attempt_number 在中止以前尝试的最大次数,最后一次若是仍是有异常则会抛出异常,中止运行

二、stop_max_delay 最大延迟时间

三、wait_fixed:两次调用方法期间停留时长,默认1000毫秒,1秒

四、wait_random_min:在两次调用方法停留时长,停留最短期,默认为0

五、wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

六、wait_incrementing_increment:每调用一次则会增长的时长,默认 100毫秒

七、wait_exponential_multiplierwait_exponential_max:以指数的形式产生两次retrying之间的停留时间,产生的值为2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已经retry的次数,若是产生的这个值超过了wait_exponential_max的大小,那么以后两个retrying之间的停留值都为wait_exponential_max

八、retry_on_exception: 指定一个函数,若是此函数返回指定异常,则会重试,若是不是指定的异常则会退出

九、retry_on_result:指定一个函数,若是指定的函数返回True,则重试,不然抛出异常退出

使用比较简单,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 这两个。其余还有一些,你们能够去参考文档。

好了,就这么多啦,我是迷神,更多精彩,记得关注我哦,请多多转发,有问题也能够评论哦。感谢做者分享-http://bjbsair.com/2020-04-07...

图/文:迷神

从以前写的 【Python登录小米路由器拨号更换IP,绕过网站反爬IP限制机制】咱们就能够看到python有一种重试机制,很好用。特别是在写爬虫的时候,简直是python爬虫必备利器。

工做中也常常碰到的问题就是,某个方法出现了异常,重试几回。循环重复一个方法是很常见的。好比爬虫中的获取代理,对获取失败的状况进行重试。或者是python爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。

Python异常失败重试模块:retrying,python爬虫必备利器

人生苦短啊

安装retrying模块

pip install retrying #安装

retrying提供一个装饰器函数retry,被装饰的函数会在运行失败的状况下从新执行,默认一直报错就一直重试。咱们先看下咱们以前的一段代码:

from retrying import retry  
@retry(stop_max_attempt_number=50000,wait_fixed=2000)  
def tyc():  
    #代码  
      
if __name__ == '__main__':  
    tyc()

这个里面retry的装饰器,有2个参数,stop_max_attempt_number 表明最大重试次数,wait_fixed 代码,间隔多久进行重试。

retry经常使用参数相关

他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:

# 设置方法的最大延迟时间,默认为100毫秒(是执行这个方法重试的总时间)  
@retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法执行之间的等待时间  
@retry(stop_max_attempt_number=5,wait_fixed=2000)  
# 随机的等待时间  
@retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000)  
# 每调用一次增长固定时长  
@retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)

其余的还有参数:

一、 stop_max_attempt_number 在中止以前尝试的最大次数,最后一次若是仍是有异常则会抛出异常,中止运行

二、stop_max_delay 最大延迟时间

三、wait_fixed:两次调用方法期间停留时长,默认1000毫秒,1秒

四、wait_random_min:在两次调用方法停留时长,停留最短期,默认为0

五、wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

六、wait_incrementing_increment:每调用一次则会增长的时长,默认 100毫秒

七、wait_exponential_multiplierwait_exponential_max:以指数的形式产生两次retrying之间的停留时间,产生的值为2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已经retry的次数,若是产生的这个值超过了wait_exponential_max的大小,那么以后两个retrying之间的停留值都为wait_exponential_max

八、retry_on_exception: 指定一个函数,若是此函数返回指定异常,则会重试,若是不是指定的异常则会退出

九、retry_on_result:指定一个函数,若是指定的函数返回True,则重试,不然抛出异常退出

使用比较简单,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 这两个。其余还有一些,你们能够去参考文档。

好了,就这么多啦,我是迷神,更多精彩,记得关注我哦,请多多转发,有问题也能够评论哦。感谢做者分享-http://bjbsair.com/2020-04-07...

图/文:迷神

从以前写的 【Python登录小米路由器拨号更换IP,绕过网站反爬IP限制机制】咱们就能够看到python有一种重试机制,很好用。特别是在写爬虫的时候,简直是python爬虫必备利器。

工做中也常常碰到的问题就是,某个方法出现了异常,重试几回。循环重复一个方法是很常见的。好比爬虫中的获取代理,对获取失败的状况进行重试。或者是python爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。

Python异常失败重试模块:retrying,python爬虫必备利器

人生苦短啊

安装retrying模块

pip install retrying #安装

retrying提供一个装饰器函数retry,被装饰的函数会在运行失败的状况下从新执行,默认一直报错就一直重试。咱们先看下咱们以前的一段代码:

from retrying import retry  
@retry(stop_max_attempt_number=50000,wait_fixed=2000)  
def tyc():  
    #代码  
      
if __name__ == '__main__':  
    tyc()

这个里面retry的装饰器,有2个参数,stop_max_attempt_number 表明最大重试次数,wait_fixed 代码,间隔多久进行重试。

retry经常使用参数相关

他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:

# 设置方法的最大延迟时间,默认为100毫秒(是执行这个方法重试的总时间)  
@retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法执行之间的等待时间  
@retry(stop_max_attempt_number=5,wait_fixed=2000)  
# 随机的等待时间  
@retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000)  
# 每调用一次增长固定时长  
@retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)

其余的还有参数:

一、 stop_max_attempt_number 在中止以前尝试的最大次数,最后一次若是仍是有异常则会抛出异常,中止运行

二、stop_max_delay 最大延迟时间

三、wait_fixed:两次调用方法期间停留时长,默认1000毫秒,1秒

四、wait_random_min:在两次调用方法停留时长,停留最短期,默认为0

五、wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

六、wait_incrementing_increment:每调用一次则会增长的时长,默认 100毫秒

七、wait_exponential_multiplierwait_exponential_max:以指数的形式产生两次retrying之间的停留时间,产生的值为2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已经retry的次数,若是产生的这个值超过了wait_exponential_max的大小,那么以后两个retrying之间的停留值都为wait_exponential_max

八、retry_on_exception: 指定一个函数,若是此函数返回指定异常,则会重试,若是不是指定的异常则会退出

九、retry_on_result:指定一个函数,若是指定的函数返回True,则重试,不然抛出异常退出

使用比较简单,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 这两个。其余还有一些,你们能够去参考文档。

好了,就这么多啦,我是迷神,更多精彩,记得关注我哦,请多多转发,有问题也能够评论哦。感谢做者分享-http://bjbsair.com/2020-04-07...

图/文:迷神

从以前写的 【Python登录小米路由器拨号更换IP,绕过网站反爬IP限制机制】咱们就能够看到python有一种重试机制,很好用。特别是在写爬虫的时候,简直是python爬虫必备利器。

工做中也常常碰到的问题就是,某个方法出现了异常,重试几回。循环重复一个方法是很常见的。好比爬虫中的获取代理,对获取失败的状况进行重试。或者是python爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。

Python异常失败重试模块:retrying,python爬虫必备利器

人生苦短啊

安装retrying模块

pip install retrying #安装

retrying提供一个装饰器函数retry,被装饰的函数会在运行失败的状况下从新执行,默认一直报错就一直重试。咱们先看下咱们以前的一段代码:

from retrying import retry  
@retry(stop_max_attempt_number=50000,wait_fixed=2000)  
def tyc():  
    #代码  
      
if __name__ == '__main__':  
    tyc()

这个里面retry的装饰器,有2个参数,stop_max_attempt_number 表明最大重试次数,wait_fixed 代码,间隔多久进行重试。

retry经常使用参数相关

他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:

# 设置方法的最大延迟时间,默认为100毫秒(是执行这个方法重试的总时间)  
@retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法执行之间的等待时间  
@retry(stop_max_attempt_number=5,wait_fixed=2000)  
# 随机的等待时间  
@retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000)  
# 每调用一次增长固定时长  
@retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)

其余的还有参数:

一、 stop_max_attempt_number 在中止以前尝试的最大次数,最后一次若是仍是有异常则会抛出异常,中止运行

二、stop_max_delay 最大延迟时间

三、wait_fixed:两次调用方法期间停留时长,默认1000毫秒,1秒

四、wait_random_min:在两次调用方法停留时长,停留最短期,默认为0

五、wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

六、wait_incrementing_increment:每调用一次则会增长的时长,默认 100毫秒

七、wait_exponential_multiplierwait_exponential_max:以指数的形式产生两次retrying之间的停留时间,产生的值为2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已经retry的次数,若是产生的这个值超过了wait_exponential_max的大小,那么以后两个retrying之间的停留值都为wait_exponential_max

八、retry_on_exception: 指定一个函数,若是此函数返回指定异常,则会重试,若是不是指定的异常则会退出

九、retry_on_result:指定一个函数,若是指定的函数返回True,则重试,不然抛出异常退出

使用比较简单,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 这两个。其余还有一些,你们能够去参考文档。

好了,就这么多啦,我是迷神,更多精彩,记得关注我哦,请多多转发,有问题也能够评论哦。感谢做者分享-http://bjbsair.com/2020-04-07...

图/文:迷神

从以前写的 【Python登录小米路由器拨号更换IP,绕过网站反爬IP限制机制】咱们就能够看到python有一种重试机制,很好用。特别是在写爬虫的时候,简直是python爬虫必备利器。

工做中也常常碰到的问题就是,某个方法出现了异常,重试几回。循环重复一个方法是很常见的。好比爬虫中的获取代理,对获取失败的状况进行重试。或者是python爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。

Python异常失败重试模块:retrying,python爬虫必备利器

人生苦短啊

安装retrying模块

pip install retrying #安装

retrying提供一个装饰器函数retry,被装饰的函数会在运行失败的状况下从新执行,默认一直报错就一直重试。咱们先看下咱们以前的一段代码:

from retrying import retry  
@retry(stop_max_attempt_number=50000,wait_fixed=2000)  
def tyc():  
    #代码  
      
if __name__ == '__main__':  
    tyc()

这个里面retry的装饰器,有2个参数,stop_max_attempt_number 表明最大重试次数,wait_fixed 代码,间隔多久进行重试。

retry经常使用参数相关

他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:

# 设置方法的最大延迟时间,默认为100毫秒(是执行这个方法重试的总时间)  
@retry(stop_max_attempt_number=5,stop_max_delay=50)
# 添加每次方法执行之间的等待时间  
@retry(stop_max_attempt_number=5,wait_fixed=2000)  
# 随机的等待时间  
@retry(stop_max_attempt_number=5,wait_random_min=100,wait_random_max=2000)  
# 每调用一次增长固定时长  
@retry(stop_max_attempt_number=5,wait_incrementing_increment=1000)

其余的还有参数:

一、 stop_max_attempt_number 在中止以前尝试的最大次数,最后一次若是仍是有异常则会抛出异常,中止运行

二、stop_max_delay 最大延迟时间

三、wait_fixed:两次调用方法期间停留时长,默认1000毫秒,1秒

四、wait_random_min:在两次调用方法停留时长,停留最短期,默认为0

五、wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

六、wait_incrementing_increment:每调用一次则会增长的时长,默认 100毫秒

七、wait_exponential_multiplierwait_exponential_max:以指数的形式产生两次retrying之间的停留时间,产生的值为2^previous_attempt_number * wait_exponential_multiplier,previous_attempt_number是前面已经retry的次数,若是产生的这个值超过了wait_exponential_max的大小,那么以后两个retrying之间的停留值都为wait_exponential_max

八、retry_on_exception: 指定一个函数,若是此函数返回指定异常,则会重试,若是不是指定的异常则会退出

九、retry_on_result:指定一个函数,若是指定的函数返回True,则重试,不然抛出异常退出

使用比较简单,用的最多的不外乎:stop_max_attempt_number,stop_max_delay 这两个。其余还有一些,你们能够去参考文档。

好了,就这么多啦,我是迷神,更多精彩,记得关注我哦,请多多转发,有问题也能够评论哦。

相关文章
相关标签/搜索