再試行モジュールを使用して例外が発生するたびに関数を再試行しようとしています。ただし、例外があっても再試行することはありません。たとえば、以下のコードスニペットを見てください。 2回目のURLのランダムな間隔でurl_list
に10回再試行して失敗する必要があります。誰でも再試行していない理由を教えてもらえますか?Pythonの再試行モジュールが例外時に再試行しない
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