私は、urllib2 OpenerDirectorを使用してインターネットをクロールするためにPythonスパイダーを使用しています。問題は、接続が必然的にhttpsアドレスにハングすることで、明らかにタイムアウト値を無視するということです。Pythonでは、時々ハングする関数呼び出しのタイムアウトを強制できますか?
解決策の1つは、スレッドで実行し、スレッドが停止した場合にそのスレッドを強制終了して再起動することです。どうやらPythonはスレッドを殺すことをサポートしておらず、ガベージコレクションやその他の問題のために悪い考えだと思われます。しかし、この解決法は、単純さのために私にとっては好ましいものです。
もう1つのアイデアは、Twistedのような非同期ライブラリを使用することですが、問題は解決しません。
強制的に呼び出しを中断する方法、またはurllib2 OpenerDirectorがタイムアウトを処理する方法を修正する方法が必要です。ありがとう。
パート2に関して、明らかに「これは実際にスレッドを停止しません」。 – 2371
"定義して関数を呼び出すために私がやっていたことを変換する"ことを明確にできますか? – 2371