Python中处理socket错误Errno 10060的try/except语句
我有一个Python 2.7的脚本,它的功能是从数据库中打开和抓取多个网址,并从网页中提取一些信息。这个代码运行起来可能需要长达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
我尝试通过在打开网址的操作之间加上2秒的暂停(使用time.sleep(2)
)来避免这个错误,但我还是会遇到这个问题。这个错误似乎和我尝试打开的网址无关。
我在考虑用一个try/except语句来防止我的脚本崩溃。
如果出现了socket错误,脚本会暂停大约20秒,然后再尝试打开网址。如果网址成功打开,就继续执行脚本。我使用urlopen()
来打开这些网址。
2 个回答
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
1
因为你的代码出现了一个 IOError
错误,试着运行这段代码,不过要把你出错的那一行替换成 raise
。
try:
raise IOError
except IOError:
time.sleep(20)
pass
else:
break