0

私は誰かが助けてくれることを望んでいました...

だから...私はmultiprocessingベースのPythonnetsnmpポーラーを書いています(データを収集した後に多くのデータ構造操作を行うので、オーバーヘッドは通常よりも価値がありますthreading)。完全なPythonインターフェイス(適切なOID操作、バルクウォークなど)が見つからなかったため、自分のctypesバインディングを修正することにしました。私はsnmp_sess_synch_response()実際にクエリを実行するために使用します。

シングルスレッドを実行すると、問題なく動作します(クエリを実行して結果を取得できます)。しかし、継承されたインスタンス内から(python)netsnmpクラスを呼び出すとProcess; に到達するsnmp_sess_synch_response()と、スレッドは停止し、戻りコード「2」でsnmp_errstring()戻り、「不明なエラー」を返します。

私が見つけた唯一の情報は、http://net-snmp.sourceforge.net/docs/README.thread.htmlのシングルAPIを使用する必要があり、最初のMIBビルドはスレッド化の前に行う必要があるということです。シングルAPIを使用しており、ワーカーを生成する前にMIBを構築しています。

誰かがこれをデバッグするためにどのように進めるべきか考えていますか?マルチスレッドはctypesでどのように処理されますか?なぜ使用するmultiprocessingと、動作中のシングルスレッドポーラーがこのように停止するのでしょうか。

私はredhat664ビットとpython2.6.6でnet-snmp5.5-41.el6を使用しています。

4

1 に答える 1

0

これは私のファイルハンドルを閉じないことの問題であることが判明したので、しばらくするとスレッドはすべてのハンドルを使い果たして、たくさんの悪いエラーをスローしました。

于 2012-10-27T07:43:15.440 に答える