このようなPythonデコレータ関数を作成すると
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
こんな感じで使えます
@retry_until_true(20, delay=30)
def check_something_function(x, y):
...
return True
しかし、20 と 30 が変数になるように、実行時に「試行」と「遅延」の異なる値をデコレータに渡す方法はありますか?