декоратор повтора на Python
Я пытаюсь использовать декоратор повтора. Он работает хорошо, но когда достигается максимальное количество попыток, возникает исключение. Как мне избежать этого исключения, чтобы выйти из этой ситуации, или как вернуть значение, когда это произойдет?
import random
from retrying import retry
@retry( wait_fixed = 500, stop_max_delay = 2000 )
def _do_something_unreliable():
actual = random.randint(0, 10)
expected = 11
print actual
print expected
print '=' *30
if actual != expected: # retry does not succeed
raise IOError( "Broken" )
_do_something_unreliable()
Результат:
3
11
==============================
7
11
==============================
2
11
==============================
5
11
==============================
Traceback (most recent call last):
File "/home/itaybz/Documents/newKlara/infra/__stam.py", line 15, in <module>
_do_something_unreliable()
File "/home/itaybz/.local/lib/python2.7/site-packages/retrying.py", line 49, in wrapped_f
return Retrying(*dargs, **dkw).call(f, *args, **kw)
File "/home/itaybz/.local/lib/python2.7/site-packages/retrying.py", line 212, in call
raise attempt.get()
File "/home/itaybz/.local/lib/python2.7/site-packages/retrying.py", line 247, in get
six.reraise(self.value[0], self.value[1], self.value[2])
File "/home/itaybz/.local/lib/python2.7/site-packages/retrying.py", line 200, in call
attempt = Attempt(fn(*args, **kwargs), attempt_number, False)
File "/home/itaybz/Documents/newKlara/infra/__stam.py", line 13, in _do_something_unreliable
raise IOError( "Broken" )
IOError: Broken
6
11
==============================
Process finished with exit code 1