Python 2.4.4 ではurllib2.urlopen()
、リソースを要求するために使用しています。リクエストを行う前に、次のようにタイムアウトを設定しています。
socket.setdefaulttimeout(10)
(このバージョンの Python は古すぎて、urlopen()
ビルトイン タイムアウト付きのバージョンはありません。)
ほとんどの場合、これでうまくいくようです。ただし、要求に応じてハングするサーバーに遭遇しました。Chrome では、ブラウザがあきらめて次のように言うまでに 5 分近くかかります。
SERVERNAME の応答に時間がかかりすぎたため、Google Chrome はウェブページを読み込めませんでした。Web サイトがダウンしているか、インターネット接続に問題が発生している可能性があります。
Python では、urlopen
短いタイムアウトを設定しているにもかかわらず、リクエストが無期限にハングしているように見えます。正確には何がsocket.setdefaulttimeout()
制御され、これらの接続にハードタイムアウトを強制する方法はありますか (他に何が起こっているかに関係なく、10 秒が経過すると、試行を終了します)?