用于套接字错误Errno 10060的Python try / except语句

时间:2014-04-22 18:48:31

标签: python urlopen try-except

我有一个Python 2.7脚本,包括从数据库打开/抓取多个URL并从网页中提取一些信息。该代码最多可能需要8个小时才能运行,我正在处理多个网站。

每隔一段时间(1-2小时),我在尝试打开网址时随机收到错误消息IOError: [Errno socket error] [Errno 10060]

IOError: [Errno socket error] [Errno 10060] A connection attempt
failed because the connected party did not properly respond after a
period of time, or established connection failed because connected
host has failed to respond

我尝试通过在URL打开操作之间添加time.sleep(2)暂停2秒来避免错误,但我仍然收到错误消息。该错误似乎与我尝试打开网址的网站无关。

我正在寻找一种方法来防止我的脚本使用try / except语句崩溃 如果出现套接字错误,脚本将暂停20秒,然后重试打开URL。如果URL正确打开,请继续使用脚本。我使用urlopen()打开网址。

2 个答案:

答案 0 :(得分:1)

当您的代码引发IOError时,请运行此代码,但用raise替换您的错误行。

try:
    raise IOError
except IOError:
    time.sleep(20)
    pass
else:
    break

答案 1 :(得分:0)

由于这种情况非常罕见,并且每隔一小时左右才会发生,因此您可能会责怪您的互联网连接。您正在寻找的代码是:

import time
for url in urls:
    while True:
        try:
            response = urllib2.urlopen(url)
            #Do stuff
        except :
            time.sleep(20)
        else :
            #stops the inner loop if there is no error
            break