2011-11-11 6 views
1

私のプログラムはページを開いて、時間間隔が[0、t]のデータを取得しようとします。
私は urllib2を使用してこのタスクを実行しようとしています。urllib2.urlopen - 間違ったリンクが与えられた場合、より速く閉じる

t=1 
url="http://example.com" 
response=urllib2.urlopen(url,timeout=t) 
html=response.read() 

これはURLが存在する場合に機能するようです。ただし、存在しないURLをいくつか置くと、プログラムを停止するのに時間がかかりすぎます。私がこのプログラムをいくつかのWebサイトで使用するようにすると、ユーザーはエラーメッセージが長すぎるのを待つ必要があります。
設定時間より時間がかかる場合は、 urlopenコマンドの実行を停止する方法はありますか?

答えて

1

リンクが正しいかどうかを確認している場合は、use a HEAD requestです。

+0

いいえ、リンクが間違っている場合は1秒未満で停止します。リンクしたコードに間違ったリンクを入れてみてください。エラーメッセージが表示されるまでに20秒間待たなければなりません。 – enedene

1

なぜこのような長い遅延が発生しているのかわかりません。

存在しないドメインにリクエストを行うと、urllib2.URLError: <urlopen error [Errno 11004] getaddrinfo failed>は約0.2秒に発生します。

実行している正確なコードと取得しているドメインは何ですか?

requestsとタイムアウトパラメータを使用してください。

+0

それを試してみてください。残念ながら同じことは、あなたが待って、あなたが待って... – enedene

+0

"実行している正確なコードとあなたがフェッチしているドメインは何ですか?" – Acorn

+0

line1:url = "http://jdoiajoisdzzzzzej.com" line2:Linux Python 2.7.2以降のレスポンス= urllib2.urlopen(url、timeout = 1) – enedene

関連する問題