2016-06-23 9 views
0

私が従うポッドキャストの最新のエピソードをダウンロードするために使用する「小さな」ポッドキャストダウンロードプログラムをppodというPythonで作成しました。インターネット接続を含む2つの主なステップがあります:ポッドキャストのRSS XMLページをダウンロードし、解析されたXMLページから取得したオーディオファイルをダウンロードすることです。これらのステップのいずれかでタイムアウトを行うことができます(しばしば行います)。しかし、私の人生では、このタイムアウトへの追い越しを処理できないようです。私もexcept予選、そしてまたimport socketの代わりfrom socket import timeoutexcept socket.timeoutを使用していない試したsocket.timoutの例外を処理できないようです。

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 

と:私は継続的にこのエラーが出る

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 

:私は、XMLファイルを取得するには、以下を使用します私はまだ希望の動作を取得していません。

socket.timeout例外の処理方法は、urllib.requestですか?

答えて

0

あなたのスタックトレースを見てください - あなたが投稿したコードのどれもがスタックトレースにありません。あなたのコードの問題は、このスニペットではありません。

+0

うわー、投稿されたスニペットのすぐ下に 'content = f.read()'という行があり、urllibがタイムアウトしたと仮定しました。私は、 'read'メソッドがタイムアウトできるソケットを作成することを知らなかった。このコマンドの 'try'ブロックで' except timeout'を使うと、明らかに問題を解決します... –

関連する問題