Se creo una funzione pitone decoratore come questoparametri Passando al decoratore in fase di esecuzione
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
posso usare in questo modo
@retry_until_true(20, delay=30)
def check_something_function(x, y):
...
return True
Ma c'è un modo per passare valori diversi per 'prove 'e' ritardare 'il decoratore in fase di runtime, in modo che 20 e 30 siano variabili?
Il decoratore è chiamato in orario def. Se vuoi passare diversi valori in fase di esecuzione perché non avere solo una funzione. Es .: 'def retry_until_true (func, tries, delay): ...'. –