Python:如何在函数上使用retry(),它应该重试,直到该函数返回True

时间:2016-11-04 13:31:06

标签: python

我正在尝试使用重试,但它没有重试。

retry(stop_max_attempt_number=8,
      wait_fixed=15000)(check_type(var1,type))

check_type:此函数将返回true或false。              它应该重试,直到此函数返回true。              请帮忙解决这个问题。

1 个答案:

答案 0 :(得分:2)

我假设您从retry包中询问retrying函数。如果函数引发异常,或者断言失败,retry()将重试你的函数,所以你可以将你的函数包装到另一个函数中:

def wrap_function(var1, type):
    return_value = check_type(var1, type)
    assert return_value is True

caller = retry(stop_max_attempt_number=8, wait_fixed=15000)(
    wrap_function)
caller(var1, type)

另请注意retry()必须接收要执行的函数,并返回一个可以调用的函数。因此,当您将函数传递给retry()时,必须删除括号和参数(否则您将传递TrueFalse)并且必须保存返回的函数以便稍后调用它(我在我的例子中使用了变量caller。)