2

如果异常不是使用Python的坚韧的某种类型,如何重试函数?

retry_if_exception_type如果出现某种类型的异常,将重试。not似乎在方法之前或其参数之前都不起作用。

retry_unless_exception_type,另一方面,即使没有上升错误,也会永远循环,直到出现某种类型的上升错误。

4

3 回答 3

0

retry_unless_exception_type()结合使用为stop_after_attempt()我完成了这一工作。防止stop_after_attempt()无限循环。

于 2020-01-29T19:20:50.280 回答
0

我必须为此创建自己的课程:

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())
于 2020-03-11T12:33:41.600 回答
0

将其分解一下,您想要的是在以下情况下重试:

  • 引发异常
  • (and) 除非例外是某种类型

所以写:

retry_if_exception_type() & retry_unless_exception_type(ErrorClassToNotRetryOn)
于 2021-04-22T19:18:22.220 回答