在断开网络连接时绕过Python IOError?

时间:2014-12-18 00:11:00

标签: python ioerror

嗨,有没有人知道我怎么能通过IOError? 基本上我有python脚本试图从我的网站上抓取/获取数据 通过urllib。 但当我从网络断开时,我得到了:

IOError:[Errno套接字错误] [Errno 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败

我如何告诉python - 继续尝试直到我将被连接?

for example:

currtokenurl = "http://www.example.com/heady"

f = urllib.urlopen(currtokenurl)
currtoken = f.read()

感谢。

2 个答案:

答案 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
相关问题