Настраиваемое поведение повторной попытки для каждой ошибки с помощью библиотеки 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