2011-10-26 6 views
1

同じイベントループからAsyncore.dispatcherとSimpleXMLRPCServerイベントを処理するにはどうすればよいですか?同じイベントループからのSimpleXMLRPCServer呼び出しとAsyncore.dispatchersイベントの処理

P.S.私はすでにあなたの中にはTwistedを勧めているかも知れないことを知っていますが、Twistedの問題は私のニーズにとってはあまりにも高水準のライブラリだということです。特に私は、タイマに依存するAsyncore.dispatcher.writable()メソッドをオーバーライドすることによってUDPフロー制御を行っています。 Twistedでこれができるかどうかわかりません。

答えて

1

これはTwistedを使用してください:-)。 SimpleXMLRPCServerを非同期ループに入れることはできません。それはブロックすることを期待している同期コードです。

UDPを使用していても、Twistedによるフロー制御は簡単です。 writable()のようなメソッドをオーバーライドするのではなく、は、transport属性でstopReading/stopWriting/startReading/startWritingというメソッドを呼び出すことができます。これらの方法はhereです。

+0

SimpleXMLRPCServerは、書き込みがブロックされている間、読み取りのために非同期IOを使用します。とにかく、Twistedは高水準ライブラリのようですが、低レベルのasyncoreと同じことをすべて実行することは可能です。 TwistedのFileDescriptorから継承して低レベルのIO機能を使用したり、Twisted Prodcuersを使用したりすることができます。後者の方が良い解決策に見えます。ありがとう。 –

関連する問題