How can I handle Asyncore.dispatcher(s) and SimpleXMLRPCServer events from the same event-loop?
P.S. I already know that some of you might recommend Twisted for this, but the problem with Twisted is that it is a little bit too high-level library for my needs. In particular I am doing UDP flow-control by overriding Asyncore.dispatcher.writable() method that depends on timers. Not sure if/how this could be doable in Twisted.
You should use Twisted for this :-). You can't put
SimpleXMLRPCServer
into an asynchronous loop; it's synchronous code, which expects to block.Flow-control with Twisted, even with UDP, is easy. Rather than overriding a method like
writable()
, yourDatagramProtocol
can call methods likestopReading
/stopWriting
/startReading
/startWriting
on theirtransport
attribute. You can see these methods here.