[Twisted-Python] Stopping and restarting the reactor

Brian Granger bgranger at scu.edu
Thu Jun 2 12:37:09 EDT 2005

On Jun 1, 2005, at 4:25 PM, Bob Ippolito wrote:

> On Jun 1, 2005, at 3:58 PM, Brian Granger wrote:
>> I am using twisted's client capabilities in an interactive setting.   
>> To allow for interactive work, I have wrapped all my calls to  
>> connectTCP with a class that starts the reactor when a new set of  
>> connectTCP calls is made.  I stop the reactor in the  
>> clientConnectionLost method of my ClientFactory (when there are no  
>> more connections).
>> The first time I initiate a connectTCP call in my wrapper class  
>> everything works as expected:  the reactor is started, twisted does  
>> its stuff, and the ClientFactory stops the reactor (giving me back  
>> interactive controll).  BUT, if I the initiate another connectTCP  
>> call, the reactor starts, but then I get a User Timeout error showing  
>> up.  That is, the second time, no connection is made.  My  
>> ClientFactory again stops the reactor (this time in  
>> clientConnectionFailed), but then python hangs.
>> My question:  is the reactor designed to be started/stopped/restarted  
>> in a single session?  If so, are there any considerations that I am  
>> missing?  Why doesn't the connection get made the second time?
> No, it's not.  You should start the reactor at the beginning of your  
> app, and stop it when your app is going to quit.  That's it.

Ahh, that would explain the off behavior I see.

> threadedselectreactor  
> <http://bob.pythonmac.org/archives/2005/04/17/twisted-and-foreign- 
> event-loops/> is probably more appropriate for what you're trying to  
> do.

Fantastic!  I will have a look at this.

> -bob

More information about the Twisted-Python mailing list