retry是python中一个可以用来处理异常的包,借助于retry,对于出现问题的代码,我们可以再次运行。例如在使用在线服务时,我们不希望程序因为网络中断的原因而异常退出,这时候就可以使用retry模块进行处理,可以指定重新尝试的次数,也可以不断重试直到运行成功。
如果我们有一段代码,里面有着不确定性因素,在运行出错时,我们希望重新运行,那么可以使用下面的方法:
@retry(stop_max_attempt_number=2)
def LoginPage()
上面这段代码会反复运行函数LoginPag(),直至运行成功。当然,我们也可以指定最大运行次数,当达到最大运行次数仍未运行成功时,程序将会退出:
@retry(stop_max_attempt_number=2)
def LoginPage()
上面我们指定了LoginPage()最多运行2次,即使没有运行成功,在达到2次后,程序也会退出
一、stop_max_attempt_number:在中止以前尝试的最大次数,最后一次若是仍是有异常则会抛出异常,中止运行,默认为5次;
二、stop_max_delay:好比设置成10000,那么从被装饰的函数开始执行的时间点开始,到函数成功运行结束或者失败报错停止的时间点,只要这段时间超过10秒,则中止重试(单位是毫秒)函数;
三、wait_fixed:设置在两次retrying之间的停留时间,单位毫秒post
四、wait_random_min和wait_random_max:用随机的方式产生两次retrying之间的停留时间。wait_random_min停留最短期,默认为0,单位毫秒。wait_random_max停留最长时间,默认为1000,单位毫秒url;
六、retry_on_result:指定一个函数,若是指定的函数返回True,则重试;不然抛出异常退出(指定要在获得哪些结果的时候去retry,retry_on_result传入一个函数对象,在执行get_result成功后,会将函数的返回值经过形参result的形式传入retry_if_result_none函数中,若是返回值是None那么就进行retry,不然就结束并返回函数值);
七、retry_on_exception: 指定一个函数,若是此函数返回指定异常,则会重试;若是不是指定的异常,否则就会退出。