【Python】retrying模块使用场景

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_37967865/article/details/82818582

大家在做数据抓取或者用selenium自动化进行元素定位的时候,经常遇到由于网络问题导致的抓取数据失败,或者定位元素失败。
针对这种情况,我们可以通过设置等待时间去控制,其实还有一种方法,就是使用retrying,它提供一个装饰器函数retry,被装饰的函数会在运行失败的条件下重新执行,默认只要一直报错就会不断重试。
假设我们希望从随机数1~9中得到0,意思是一直随机下去,直到生成随机数0结束。
步骤如下:
1.安装retrying模块 pip install retrying
2.具体代码如下:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#作者:cacho_37967865
#博客:https://blog.csdn.net/sinat_37967865
#文件:retryModel.py
#日期:2018-09-22
#备注:pip install retrying  提供一个装饰器函数retry
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

import random
from retrying import retry

@retry  #提供一个装饰器函数retry,被装饰的函数就会在运行失败的条件下重新执行,默认只要一直报错就会不断重试。
def getFixRandom():
    a = random.randint(0, 10)
    if a > 0:
        print(a, "不满足要求")
        raise IOError("如果想要永远走else分支,使用raise IOError()")
    else:
        print ("必须返回为0才结束")
        print(a,"此时满足要求,结束函数")

getFixRandom()


3.retrying模块简单介绍


stop_max_attempt_number:用来设定最大的尝试次数,超过该次数就停止重试
stop_max_delay:比如设置成100,那么从被装饰的函数开始执行的时间点开始,到函数成功运行结束或者失败报错中止的时间点,只要这段时间超过0.1秒,函数就不会再执行了
wait_fixed:设置在两次retrying之间的停留时间
wait_random_min和wait_random_max:用随机的方式产生两次retrying之间的停留时间
wait_exponential_multiplier和wait_exponential_max:以指数的形式产生两次retrying之间的停留时间

猜你喜欢

转载自blog.csdn.net/sinat_37967865/article/details/82818582