[Twisted-Python] Perspective Broker vs AMP

Phil Mayers p.mayers at imperial.ac.uk
Mon Mar 31 06:55:39 EDT 2008

Simon Pickles wrote:
> Hi,
> You may have seen my recent posts about data comms across nodes of 
> server network.
> Phil kindly pointed me towards PB and AMP which, after some fiddling 
> both look viable. However, I do have one question: If clients can 
> request remote data from the server, is the reverse possible?
> As I understand PB, a client can get the root object of a 
> PBServerFactory, thru which it can call methods with the 'remote_' 
> prefix. I'm not clear how this can work in the other direction. As for 

Well, this is a contrived example (since you could just return the 
deferred) but:

class Server(pb.Referenceable):
   def remote_foo(self, client):
     d = doThing().addCallback(self.thing_result, client)

   def thing_result(self, result, client):
     client.callRemote('thing', result)

class Client(pb.Referenceable):
   def remote_thing(self, thing):
     # do something

   def callServer(self):
     d = self.server.getRootObject().addCallback(self.callServer2)
   def callServer2(self, server):
     server.callRemote('foo', self)

That is - when you callRemote() you can pass pb.Referenceable as 
arguments, and the other end call callRemote on those objects.

> AMP, this seems similar - the client uses callRemote() to execute remote 
> methods on the amp server.

No idea about AMP

> Since I have node clients all talking through a server, I need the 
> client to make requests to the server, which in turn requests the 
> appropriate data from the corresponding client.
> Thanks for any advice on this
> Regards
> Simon

More information about the Twisted-Python mailing list