[Twisted-Python] PB/Remote Object/Deferred question
John Crawford
cyclops at speakeasy.net
Wed Sep 9 10:39:03 MDT 2009
I'm trying to understand the Perspective Broker, reading over the
on-site documentation, specifically the article:
http://twistedmatrix.com/projects/core/documentation/howto/pb-usage.html
and there is a section about the callRemote() function that I really
don't understand :)
First, consider these three lines:
d = factory.getRootObject()
d.addCallback(lambda object: object.callRemote("echo", "hello network"))
d.addCallback(lambda echo: 'server echoed: '+echo)
Second, the documentation says, "...object.callRemote() returns a
Deferred. Assuming the remote method was run without causing an
exception (including an attempt to invoke an unknown method), the
callback attached to that Deferred will be invoked with any objects
that were returned by the remote method call."
If I read this correctly, callRemote() returns a whole new Deferred
object, which is *not* the same as the 'd' Deferred object we already
have. So that *new* Deferred should be the one that the next callback
(line 3) is added to, since the next callback is based on the success
of the callRemote(). So wouldn't these be the correct lines:
d = factory.getRootObject()
d2 = d.addCallback(lambda object: object.callRemote("echo", "hello network"))
d2.addCallback(lambda echo: 'server echoed: '+echo)
Thanks in advance for any clarification.
John C>
More information about the Twisted-Python
mailing list