Настраиваемое поведение повторной попытки для каждой ошибки с помощью библиотеки Tenacity.

Я хотел бы создать собственное поведение при повторной попытке для разных типов ошибок. Например, если я получаю ошибку 401, я хотел бы вызвать обновление токена, прежде чем повторять запрос. Если я получу 500, я хотел бы повторить ошибку через некоторое время. и т. д.

Достижимо ли это с помощью библиотеки Tenacity? https://tenacity.readthedocs.io/en/latest/

1 ответ

если вы хотите использовать библиотеку стойкости, вы можете использоватьretry_if_exception_typeметод: https://tenacity.readthedocs.io/en/stable/api.html#tenacity.retry.retry_if_Exception_type

Хотя я думаю, что собственный декоратор также может быть хорошим вариантом, если вы хотите быть действительно гибким, например:

      def custom_retry(f):
    def wrapper(*args, **kw):
        try:
            return f(*args, **kw)
        except AttributeError as ae:
            [Do smth]
        except KeyError as ke:
            [Do smth else]
    return wrapper
Другие вопросы по тегам