私はいくつかのURLに基づいてウェブサイトからいくつかのWebページをダウンロードするためにpythonでクローラを作成しました。私はときどき私のプログラムが "conn.getresponse()"という行でハングアップすることに気付きました。例外は投げられず、プログラムは単にそこまで待っていました。conn.getresponse()(httplib.HTTPConnection)にぶら下がってはいけない
conn = httplib.HTTPConnection(component.netloc)
conn.request("GET", component.path + "?" + component.query)
resp = conn.getresponse() #hang here
私はAPIドキュメントを読んで、それが(タイムアウトを追加する)ことを言う:
conn = httplib.HTTPConnection(component.netloc, timeout=10)
しかし、それは私が接続し、「再試行」することはできません。タイムアウト後にクロールを再試行するベストプラクティスは何ですか?右方向に
trials = 3
while trials > 0:
try:
... code here ...
except:
trials -= 1
アムI:
例えば、私は、次の解決策を考えていますか?
時々、PythonライブラリがいくつかのヘッダーをWebブラウザとは異なる解釈をすることがあります([この質問](http://stackoverflow.com/q/8527862/183066)で起こったように)。したがって、確かに、私はあなたがウェブブラウザで同じURLを開こうとすることができると思います。 – jcollado