套接字错误Errno 10060的Python try/except语句
我有一个Python2.7脚本,它包括从数据库中打开/删除多个URL,并从网页中提取一些信息。代码可能需要8个小时才能运行,我正在处理多个网站 每隔一段时间(1-2小时),我会在尝试打开URL时随机收到错误消息套接字错误Errno 10060的Python try/except语句,python,urlopen,try-except,Python,Urlopen,Try Except,我有一个Python2.7脚本,它包括从数据库中打开/删除多个URL,并从网页中提取一些信息。代码可能需要8个小时才能运行,我正在处理多个网站 每隔一段时间(1-2小时),我会在尝试打开URL时随机收到错误消息IOError:[Errno socket error][Errno 10060] IOError: [Errno socket error] [Errno 10060] A connection attempt failed because the connected party did
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打开操作之间添加2秒的暂停时间来避免错误。sleep(2),但我仍然得到了错误。这个错误似乎与我试图打开URL的网站无关
我正在寻找使用try/except语句防止脚本崩溃的方法。如果发生套接字错误,脚本将暂停大约20秒,然后重试打开URL。如果URL打开正确,请继续使用脚本。我正在使用
urlopen()
打开URL。由于这种情况非常罕见,而且只会每隔一小时左右发生一次,您可能会责怪您的internet连接。您要查找的代码是:
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
当您的代码引发
IOError
时,运行此代码,但将您的错误行替换为raise
try:
raise IOError
except IOError:
time.sleep(20)
pass
else:
break
如果你能展示你的代码,那就很方便了。如果你能展示引发异常的代码的特定部分,那就更方便了。如果可能的话,还可以展示stacktraceThanks。我应该将打开URL后必须执行的命令放在
response=urllib2.urlopen(URL)
之后,还是放在最后一行break
之后。什么会更有效率和可读性?我有大约20行代码要在URL打开后执行,partI会在else块中执行,但这取决于您是否期望在那里出现异常。我认为try块应该包含尽可能少的代码。如果您想处理后续代码引发的异常,我会将其放在另一个try块中。