On Fri, 2009-10-30 at 14:06 +0000, email@example.com wrote:
It looks like your custom reactor is mainly in charge of making sure stackless.schedule() gets called at least once every 0.1 seconds. Is that right? If so, a much better approach would be to use twisted.internet.task.LoopingCall rather than implementing a custom reactor.
Is there something undesirable about that (much simpler, less fragile) approach?
I tried using LoopingCall, but it does not work. It only calls the scheduler once. I think this has to do with the fact that the stackless scheduler needs to be interwoven with the twisted reactor pump. There is more info about why it has to be done like this here: http://code.google.com/p/stacklessexamples/wiki/StacklessTwisted
As for your actual question, if you want a new reactor to be as usable as one of the existing ones, you need to write a plugin declaring its available. Take a look at twisted/plugins/twisted_reactors.py for some examples.
I shall have a look at that approach. Thanks.