[Twisted-Python] Stackless/Twisted integration again

Simon Pickles sipickles at hotmail.com
Sun Apr 6 09:48:48 MDT 2008



Jean-Paul Calderone wrote:
> On Sun, 06 Apr 2008 10:39:08 +0100, Simon Pickles 
> <sipickles at hotmail.com> wrote:
>> I was interested in Andrews Paper on this subject. I note he 
>> recommends running a twisted server as a tasklet.
>>
>> Is there a problem doing this?
>>
>> factory = pb.PBClientFactory
>> reactor.connectTCP('127.0.0.1', 1234, Factory)
>> # Load other tasklets here
>> stackless.tasklet(reactor.iterate)(1)
>>
>> or should I perhaps do this?
>>
>> factory = pb.PBClientFactory
>> reactor.connectTCP('127.0.0.1', 1234, Factory)
>> # Load other tasklets here
>> while 1:
>>    stackless.tasklet(reactor.iterate)(1)
>>    stackless.schedule()
>>
>> What does the delay in reactor.iterate(delay=0) do? Is there a 
>> reactor.run_once() call?
>>
>> I want to make the reactor a tasklet so it is included in the 
>> scheduler. Seems to be working but have I opened a can of worms?
>>
>
> Most or all uses of reactor.iterate() are wrong.
How should it be used? It looks to be working very successfully so far. 
The docs say "All pending |IDelayedCall| 
<http://twistedmatrix.com/documents/current/api/twisted.internet.interfaces.IDelayedCall.html>s 
will be called."

Does this not mean the reactor will process its queue and return? I 
imagine the delay argument specifies a maximum duration before the 
return. The docs do not describe this yet.
> I don't think Andrew's paper suggested doing this.  Why did you decide 
> to?
>
I want a way to let twisted.reactor yield to the stackless scheduler.

Thanks for any advice

Simon






More information about the Twisted-Python mailing list