def repeat trys Декоратор вызывает функцию trys раз пока не вернется н

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
def repeat(trys):
'''
Декоратор, вызывает функцию trys раз пока не вернется
не-False значение (значение не равное 0, "", None и т.д.)
'''
def repeater(func):
# wraps - стандартная фигня при создании декораторов, чтобы
# help декорируемой функции не потерялся
@wraps(func)
def wrapped(*args, **kwargs):
for x in xrange(trys):
try:
result = func(*args, **kwargs)
except Exception:
logging.debug(traceback.format_exc())
continue
if result:
return result
return None
return wrapped
return repeater