Декоратор для повторения функции Python. Покажу вам простой пример для повтора функции. Иногда нужно отправить запрос несколько раз или создать несколько одинаковых объектов. Из-за max_retries=1 функция отработает 1 дополнительный раз. В итоге будет 2 выполнения. Если хотите чтобы повторов не было поставьте @retry(0).
#!/usr/local/bin/python
import time
def retry(max_retries):
def retry_decorator(func):
def _wrapper(*args, **kwargs):
for _ in range(max_retries + 1):
try:
func(*args, **kwargs)
except:
# задержка
time.sleep(1)
return _wrapper
return retry_decorator
@retry(1)
def might_fail():
print("might_fail")
raise Exception
might_fail()