在做测试的过程中,有时候会遇到要访问的网页暂时响应不了的情况,也就是返回错误是5XX类型的。该种类型的错误可能多次尝试就不会出现,可以正常从url中下载内容。
def download(url, num_retries=3):
print 'Downloading:',url
try:
data = urllib2.urlopen(url).read()
except urllib2.URLError as e:
print 'Download error:', e.reason
data = None
if num_retries > 0 :
if hasattr(e, 'code') and 500 <= e.code < 600:
return download(url, num_retries - 1)
return data
上面的代码中若是第一次下载url中内容失败,我们最多尝试3次,尝试的次数是可以根据业务需要自己定义的。