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

从网络断开连接时绕过Python IOError?,python,ioerror,Python,Ioerror,嗨,有人知道我怎么通过IOError吗? 基本上,我有一个python脚本,它试图从我的网站上抓取/获取数据 通过urllib。 但当我与网络断开连接时,我得到: IOError:[Errno socket error][Errno 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应 我怎样才能告诉python——继续尝试,直到我连接上 for example: currtokenurl = "http://www.example.com/

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

IOError:[Errno socket error][Errno 10060]连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应

我怎样才能告诉python——继续尝试,直到我连接上

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上,用谷歌搜索它们。非常感谢你的帮助。谢谢