[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