随机“[Errno -2]名称或服务未知”错误
问题描述:
我正在使用第三方服务填充本地数据库。我有一个网站列表(约500)。我在循环中调用每个url,并用返回的数据更新我的数据库。该码流是这样的:随机“[Errno -2]名称或服务未知”错误
for url in urllist:
req = urllib.urlopen(url)
data = json.loads(req.read())
req.close()
#update the db using data here
每当我运行这段代码,脚本在与错误消息“不知道名称或服务”随机点失败。这与网址没有任何关系,因为脚本在随机点失败(即在一次运行中第50次迭代,在另一次运行中第60次迭代)
这可能是什么原因?
答
如果使用错误的代理或存在其他网络问题,你可以试试这个:
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
我想我会把每个调用到自己的线程。我想象一下,如果你得到了可变的错误,那是因为你的网络在不同的时间拥挤。 – hyleaus
检查您的代理或防火墙 – sheh
这些请求同步工作,并在开始下一个请求之前关闭每个请求。这仍然是关于网络拥塞吗? –