似乎无法处理socket.timout异常

时间:2016-06-23 16:24:25

标签: python xml urllib

我写了一个"小"用于下载我关注的播客的最新剧集的python中的播客下载程序ppod。实际上有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.timeout使用import socket代替from socket import timeout,我仍然没有获得期望的行为。

如何处理来自socket.timeout的{​​{1}}例外?

1 个答案:

答案 0 :(得分:0)

查看堆栈跟踪 - 您发布的代码中没有任何代码存在于堆栈跟踪中。您的代码中的问题不在此代码段中。