似乎无法处理 socket.timout 异常

Can't seem to handle socket.timout exception

我在 python 中编写了一个名为 ppod 的 "little" 播客下载程序,我用它来下载我关注的最新一集播客。实际上有 2 个主要步骤涉及互联网连接:下载播客的 RSS XML 页面,以及下载从已解析的 XML 页面检索到的音频文件。这些步骤中的任何一个都可能(并且经常)超时,但对于我来说,我似乎无法处理对这种超时的期望。我使用以下方法获取 XML 文件:

import urllib.request
from socket import timeout

for i in range(1,5):
    try:
        f = urllib.request.urlopen( url, timeout = 15)
        break
    except timeout:
        pass

我不断收到此错误:

Traceback (most recent call last):
  File "/usr/local/bin/ppod", line 293, in <module>
    pod.getXML()
  File "/usr/local/bin/ppod", line 114, in getXML
    content = f.read().decode('UTF-8').strip()
  File "/usr/lib/python3.5/http/client.py", line 446, in read
    s = self.safe_read(self.length)
  File "/usr/line/python3.5/http/client.py", line 592, in _safe_read
    chunck =self.fp.read(min(amt, MAXAMOUNT))
  File "/usr/lib/python3.5/socket.py", line 575, in readinto
    reaturn self._sock.recv_into(b)
socket.timeout: timed out

我也尝试过不对 except 进行限定,并且还使用 except socket.timeoutimport socket 而不是 from socket import timeout,但我仍然没有得到想要的行为.

如何处理来自 urllib.requestsocket.timeout 异常?

查看您的堆栈跟踪 - none 您发布的代码在堆栈跟踪中。您的代码中的问题不在此片段中。