我有一个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()
打开网址。
答案 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