Jeśli utworzyć funkcję pyton dekorator jak tenparametry przejścia do dekorator przy starcie
def retry_until_true(tries, delay=60):
"""
Decorator to rety a function or method until it returns True.
"""
def deco_retry(f):
def f_retry(*args, **kwargs):
mtries = tries
rv = f(*args, **kwargs)
while mtries > 0:
if rv is True:
return True
mtries -= 1
time.sleep(delay)
rv = f(*args, **kwargs)
return False
return f_retry
return deco_retry
można go używać jak to
@retry_until_true(20, delay=30)
def check_something_function(x, y):
...
return True
Ale czy istnieje sposób przekazać różne wartości dla „próbach "i" opóźnienie "do dekoratora w czasie pracy, więc 20 i 30 to zmienne?
Dekorator jest wywoływany w czasie def. Jeśli chcesz przekazać różne wartości w czasie wykonywania, dlaczego nie masz po prostu funkcji. Np .: 'def retry_until_true (func, próbuje, opóźnienie): ...'. –