从网络断开连接时绕过Python IOError?
嗨,有人知道我怎么通过IOError吗? 基本上,我有一个python脚本,它试图从我的网站上抓取/获取数据 通过urllib。 但当我与网络断开连接时,我得到: IOError:[Errno socket error][Errno 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应 我怎样才能告诉python——继续尝试,直到我连接上从网络断开连接时绕过Python IOError?,python,ioerror,Python,Ioerror,嗨,有人知道我怎么通过IOError吗? 基本上,我有一个python脚本,它试图从我的网站上抓取/获取数据 通过urllib。 但当我与网络断开连接时,我得到: IOError:[Errno socket error][Errno 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应 我怎样才能告诉python——继续尝试,直到我连接上 for example: currtokenurl = "http://www.example.com/
for example:
currtokenurl = "http://www.example.com/heady"
f = urllib.urlopen(currtokenurl)
currtoken = f.read()
谢谢。将其放入循环中,以便捕获错误并重试。许多错误不应该重试,所以创建一个您喜欢的错误列表
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()
可能是远端未连接,因此您可能需要一种方法来限制此while循环并完全放弃。使用
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
谢谢大家!都试过了,效果很好!顺便问一下,我在哪里可以获得错误列表,以便确定需要重试的错误?
import errno;dir(errno)
提供一个列表。然后搜索网络。你会发现其中大部分都有几页。顺便说一句,您会看到标准的linux代码和windows代码(它们以w/WSA开头)。如果你在windows上,用谷歌搜索它们。非常感谢你的帮助。谢谢