如何在python中的IOError期间自动重新连接

时间:2011-12-17 12:39:21

标签: python

我正在使用python进行获取链接。突然我丢失了连接并显示如下错误。

IOError: [Errno socket error] [Errno 110] Connection timed out

如何重新连接相同的链接?

例如

import urllib

a = 'http://anzaholyman.files.wordpress.com/2011/12/zip-it.gif'
image = urllib.URLopener()
image.retrieve(a,'1.jpg')

2 个答案:

答案 0 :(得分:2)

您只需使用try..except语法:

import urllib

a = 'http://anzaholyman.files.wordpress.com/2011/12/zip-it.gif'
image = urllib.URLopener()
while True:
    try:
        image.retrieve(a,'1.jpg')
        break
    except IOError:
        pass

答案 1 :(得分:1)

如果加载图形时出现实际问题,那么简单的while循环将永远不会结束,您的应用程序似乎会挂起。 为了防止这种情况,我通常使用一个计数器:

tries = 5
while tries:
    try:
        image.retrieve(a,'1.jpg')
        break
    except IOError:     
        tries -= 1     #and maybe with 0.1-1 second rest here
else:
    warn_or_raise_something

为了防止出现问题,我还有时会在通话失败后的连续尝试之间使用延迟(time.sleep)