Я пытаюсь повторить функцию всякий раз, когда возникает исключение с помощью модуля повторной попытки. Тем не менее, он никогда не повторяет попытку, хотя есть исключение. Например, взгляните на фрагмент кода ниже. Он должен повторять 10 раз со случайным интервалом для второго URL-адреса в url_list
, а затем сбой. Может ли кто-нибудь сказать мне, почему он не повторяет?python retrying module не повторяет попытку исключения
import urllib2
from retrying import retry
def retry_if_exception(exception):
"""Return True if we should retry (in this case when it's any Exception), False otherwise"""
return isinstance(exception, Exception)
@retry(retry_on_exception=retry_if_exception, wait_random_min=1000, wait_random_max=1500, stop_max_attempt_number=10)
def start_http_request(url):
try:
response = urllib2.urlopen(url)
print response
except Exception as err:
retry_if_exception(err)
print (err.reason)
url_list = ['https://www.google.ca', 'http://goo123213.ca', 'http://code.activestate.com']
for url in url_list:
print url
start_http_request(url)
Ссылки: https://pypi.python.org/pypi/retrying
вы правы, мое плохое. Однако я изменил код (обновленный выше), но не повторил. – Rihan
@Rihan Если вы хотите повторить все исключения, вам не нужно указывать тип исключения. См. Мой обновленный ответ – TemporalWolf
Магия, вы на месте. Я также хотел бы добавить, что основной причиной проблемы я пытался поймать исключение вручную в блоке повторных попыток, удалив его, решив проблему. – Rihan