2

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

IOError: [Errno socket error] [Errno 10060]时不时(1-2 小时),我在尝试打开 URL 时随机收到错误消息

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

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

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

4

2 回答 2

1

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

try:
    raise IOError
except IOError:
    time.sleep(20)
    pass
else:
    break
于 2014-04-22T18:59:21.543 回答
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
于 2014-04-22T18:58:27.403 回答