kwargs
is empty in the following code.
How to access timeout keyword arg of the decorated function?
import functools
def retriable(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
timeout = kwargs['timeout']
criteria_satisfied = func(*args, **kwargs)
while not criteria_satisfied and timeout > 0:
time.sleep(5)
timeout -= 5
criteria_satisfied = func(*args, **kwargs)
return criteria_satisfied
return wrapper
@retriable
def decorated(ip, timeout=60):
... some logic
return True
decorated(ip)