如果异常不是使用Python的坚韧的某种类型,如何重试函数?
retry_if_exception_type
如果出现某种类型的异常,将重试。not
似乎在方法之前或其参数之前都不起作用。
retry_unless_exception_type
,另一方面,即使没有上升错误,也会永远循环,直到出现某种类型的上升错误。
如果异常不是使用Python的坚韧的某种类型,如何重试函数?
retry_if_exception_type
如果出现某种类型的异常,将重试。not
似乎在方法之前或其参数之前都不起作用。
retry_unless_exception_type
,另一方面,即使没有上升错误,也会永远循环,直到出现某种类型的上升错误。
retry_unless_exception_type()
结合使用为stop_after_attempt()
我完成了这一工作。防止stop_after_attempt()
无限循环。
我必须为此创建自己的课程:
class retry_if_exception_unless_type(retry_unless_exception_type):
"""Retries until successful outcome or until an exception is raised of one or more types."""
def __call__(self, retry_state):
# don't retry if no exception was raised
if not retry_state.outcome.failed:
return False
return self.predicate(retry_state.outcome.exception())
将其分解一下,您想要的是在以下情况下重试:
所以写:
retry_if_exception_type() & retry_unless_exception_type(ErrorClassToNotRetryOn)