質問

私はまだPythonに比較的新しいので、これが明らかな質問である場合、私は謝罪します。

私の質問は、urllib2ライブラリに関するものであり、それはurlopen機能です。現在、私はこれを使用して別のサーバーから大量のページをロードします(それらはすべて同じリモートホストにあります)が、スクリプトは時々タイムアウトエラーによって殺されます(これは大きなリクエストからのものだと思います)。

タイムアウトの後にスクリプトを実行し続ける方法はありますか?すべてのページを取得できるようになりたいので、ページが取得されるまで試してみて、移動するスクリプトが必要です。

サイドノートでは、サーバーへの接続を開いたままにしますか?

役に立ちましたか?

解決

次回エラーが発生したら、エラーメッセージに注意してください。最後の行では、例外の種類がわかります。たとえば、それはaかもしれません urllib2.HTTPError. 。提起された例外の種類がわかったら、 try...except ブロック。例えば:

import urllib2
import time

for url in urls:
    while True:
        try:
            sock=urllib2.urlopen(url)
        except (urllib2.HTTPError, urllib2.URLError) as err:
            # You may want to count how many times you reach here and
            # do something smarter if you fail too many times.
            # If a site is down, pestering it every 10 seconds may not
            # be very fruitful or polite.
            time.sleep(10)
        else:              
            # Success  
            contents=sock.read()
            # process contents
            break                # break out of the while loop

他のヒント

urllib2の欠落マニュアル あなたを助けるかもしれません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top