手始めに、ForkMixInとThreadMixInの両方でTwistedとSocketServerを使用し、「スレッドプール」受信を試しました。
しかし、私はPythonで何か特別な機能を作りたかったのです。
少し背景。以前、私はCで、ソケットにバインドしてそれをリッスンする単純なTCPデーモンを作成し、Xを何度もプリフォークしてから、サーバーソケットの説明をすべてのフォークに渡すだけで、誰もが非常に結婚してクライアントを受け入れました。
私はたくさん好きな「select/poll」ベースの非同期をチェックしました。私の唯一の強みは、マルチCPUマシンを利用するために数回フォークして、スケジューリングで最高のものを期待することで、CPUを少し解放できることでした。
私はそれを私の人生のために働かせることができません。接続を受け入れることができるのは1つのインスタンスのみであり、他のすべてのインスタンスは接続の処理時に例外をスローするだけで、「空を介して反復することはできません」。
これも実現可能ですか?たくさんチェックしましたが、非同期ディスパッチャーをフォークするためのコードが見つかりませんでした(叫び)
ありがとうございました!
更新1:(要求に応じて完全なトレースバック)
error: uncaptured python exception, closing channel <__main__.EchoServer listening 0.0.0.0:8001 at 0x2ad4880c93f8> (<type 'exceptions.TypeError'>:'NoneType' /python2.6/asyncore.py|readwrite|99] [/usr/local/python2.6.9/lib/python2.6/asyncore.py|handle_read_event|408] [./6py-server.py|handle_accept|87])
asyncore.loopなどの前にフォークしたかどうかに関係なく、常にacceptで発生します。
アップデート2:(フルソース) pastebinedソース