Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
套接字错误Errno 10060的Python try/except语句_Python_Urlopen_Try Except - Fatal编程技术网

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

套接字错误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

我有一个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 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块中。