私が従うポッドキャストの最新のエピソードをダウンロードするために使用する「小さな」ポッドキャストダウンロードプログラムをppodというPythonで作成しました。インターネット接続を含む2つの主なステップがあります:ポッドキャストのRSS XMLページをダウンロードし、解析されたXMLページから取得したオーディオファイルをダウンロードすることです。これらのステップのいずれかでタイムアウトを行うことができます(しばしば行います)。しかし、私の人生では、このタイムアウトへの追い越しを処理できないようです。私もexcept
予選、そしてまたimport socket
の代わりfrom socket import timeout
でexcept 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
ですか?
うわー、投稿されたスニペットのすぐ下に 'content = f.read()'という行があり、urllibがタイムアウトしたと仮定しました。私は、 'read'メソッドがタイムアウトできるソケットを作成することを知らなかった。このコマンドの 'try'ブロックで' except timeout'を使うと、明らかに問題を解決します... –