感谢做者分享-http://bjbsair.com/2020-04-07...html
图/文:迷神python
从以前写的 【Python登录小米路由器拨号更换IP,绕过网站反爬IP限制机制】咱们就能够看到python有一种重试机制,很好用。特别是在写爬虫的时候,简直是python爬虫必备利器。python爬虫
工做中也常常碰到的问题就是,某个方法出现了异常,重试几回。循环重复一个方法是很常见的。好比爬虫中的获取代理,对获取失败的状况进行重试。或者是python爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。dom
人生苦短啊函数
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
他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:代理
# 设置方法的最大延迟时间,默认为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_multiplier和wait_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爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。
人生苦短啊
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 代码,间隔多久进行重试。
他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:
# 设置方法的最大延迟时间,默认为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_multiplier和wait_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爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。
人生苦短啊
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 代码,间隔多久进行重试。
他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:
# 设置方法的最大延迟时间,默认为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_multiplier和wait_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爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。
人生苦短啊
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 代码,间隔多久进行重试。
他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:
# 设置方法的最大延迟时间,默认为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_multiplier和wait_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爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。
人生苦短啊
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 代码,间隔多久进行重试。
他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:
# 设置方法的最大延迟时间,默认为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_multiplier和wait_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爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。
人生苦短啊
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 代码,间隔多久进行重试。
他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:
# 设置方法的最大延迟时间,默认为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_multiplier和wait_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爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。
人生苦短啊
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 代码,间隔多久进行重试。
他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:
# 设置方法的最大延迟时间,默认为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_multiplier和wait_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爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。
人生苦短啊
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 代码,间隔多久进行重试。
他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:
# 设置方法的最大延迟时间,默认为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_multiplier和wait_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爬虫爬取网页的内容的时候出现错误,也须要使用重试等,在爬虫领域,这个模块应该仍是很不错的。
人生苦短啊
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 代码,间隔多久进行重试。
他的其余参数用法有,我罗列一些我开发过程经常使用的给你们,但愿对你们有帮助,基本上这些都够用了:
# 设置方法的最大延迟时间,默认为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_multiplier和wait_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 这两个。其余还有一些,你们能够去参考文档。
好了,就这么多啦,我是迷神,更多精彩,记得关注我哦,请多多转发,有问题也能够评论哦。