我使用第三方服务填充本地数据库。我有一个网址列表(大约500)。我在循环中调用每个url,并使用返回的数据更新我的数据库。代码流如下所示:
for url in urllist:
req = urllib.urlopen(url)
data = json.loads(req.read())
req.close()
#update the db using data here
每当我运行这段代码时,脚本会在随机点失败,并显示错误消息“名称或服务未知”。这与url没有任何关系,因为脚本在随机点失败(即在一次运行中第50次迭代,在另一次运行中第60次迭代)
这可能是什么原因?
答案 0 :(得分:4)
如果您使用错误的代理或存在网络问题,您可以尝试这样做:
for url in urllist:
retry = 0
while True: # retry request
try:
req = urllib.urlopen(url)
resp_data = req.read() # in call read() network still processing
except Exception as e: # TODO need more detailed handling
if retry > 3: # 3 this is serious problem. exit
raise e
retry += 1 # retry
else:
data = json.loads()
req.close() # not needed
break