Повторить декоратор на PythonPython

Программы на Python
Ответить
Anonymous
 Повторить декоратор на Python

Сообщение Anonymous »

Я пытаюсь использовать декоратор повтора. Он работает хорошо, но при достижении максимального количества повторных попыток возникает исключение. Как мне избежать этого исключения, чтобы успешно выйти из этой ситуации, или как вернуть значение, когда это произойдет?
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
_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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»