[Twisted-Python] at what point does reactor.run() need to be called?
michal at pasternak.w.lub.pl
Tue Apr 6 06:01:27 EDT 2004
Damon Fasching [Mon, Apr 05, 2004 at 11:39:57PM -0700]:
> The following two modules work fine together.
reactor.run() enters an event-controlled loop (it's the same as "mainloop"
in GUI toolkits you could program in), so you should call it after you do
all initialization stuff.
> However, if the call to reactor.run() is moved any
> higher in client.py, the client seems to hang. For
It doesn't hang, it just gets the root object, but has no callback to pass
If it hangs (locks-up hard), it's a bug, examine & report it.
> I would like to be able to dynamically connect to new
> servers after starting my application and intereacting
> with other servers, and so after already having called
> reactor.run(). Can I do this? I'm sure it is
> possible. But the quick test above makes it seem that
> I have to invoke getRootObject() AND attach a callback
> to the returned deferred before I can invoke
Yes, that's right.
The point you've missed:
# connect to one server
# do all initialisation
The value, that getRootObject() returns is a Deferred object. This is a
"delayed" function call (which is also non-blocking), so the *real*
rootObject is passed to the Deferred.callback function.
More information about the Twisted-Python