嗨,有没有人知道我怎么能通过IOError? 基本上我有python脚本试图从我的网站上抓取/获取数据 通过urllib。 但当我从网络断开时,我得到了:
IOError:[Errno套接字错误] [Errno 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败
我如何告诉python - 继续尝试直到我将被连接?
for example:
currtokenurl = "http://www.example.com/heady"
f = urllib.urlopen(currtokenurl)
currtoken = f.read()
感谢。
答案 0 :(得分:0)
将其置于循环中,以便捕获错误并重试。不应该重试许多错误,因此请创建一个您喜欢的列表。
import time
import errno
retry_this = [errno.ETIMEOUT,]
currtokenurl = "http://www.example.com/heady"
while True:
try:
f = urllib.urlopen(currtokenurl)
break
except IOError, e:
if e.errno in retry_this:
time.sleep(10)
else:
raise
currtoken = f.read()
可能是远程端没有连接,所以你可能想要一种限制循环的方法并完全放弃。
答案 1 :(得分:0)
使用try/except
来捕获IOError:
import urllib
import time
def read_page(url):
try:
f = urllib.urlopen(url)
return f.read()
except IOError as e:
return None
while True:
f = read_page("http://www.example.com/heady")
if f is None:
print "reading again"
time.sleep(5) # try again in 5 seconds
else:
break