2009-05-01 10 views
9

私は、それがX秒以上アクティブだった場合にスレッドを殺す良いタイムアウトスクリプトの場所を探してきましたが、私が見たすべての例では常に停止しない脆弱性がありますスレッド。 thread.join(x)を使用すると、そのスレッドの目的を破ることになります。Pythonタイムアウト

私が見つけた唯一のまともな例はTimeout on a function callで、もう1つは...その欠陥がないわけではないということ

誰もがこれを行うには良い方法を知っていますか?

+0

Pythonの人々は、通常、共有メモリに書き込む可能性のあるものを殺すのは悪い考えであるため、この作業を難しくしました。スレッドの代わりにプロセスを使用できますか? – Dave

+0

この場合、mod_wsgiスクリプトのためです。だから、それはもっと終わりの事です。スクリプトが制限時間を過ぎると、スレッド全体を強制終了して終了するので、共有メモリを破壊する可能性がある大きな問題ではありません。 – Ian

+0

デーモンモードまたは組み込みモードで実行していますか? – Dave

答えて

0

これはあなたが望むものではないかもしれないが、シグナルのアプローチを考えたことはありますか? Timeout on a function call http://docs.python.org/library/signal.html#example

あなたは、スレッドの実行の開始時にアラーム信号を設定し、シグナルハンドラ内でスレッドを停止することができます。

+0

>このモジュールはスレッドでうまく動作しません(しかし、それは誰ですか?) – Dave