[Twisted-Python] AMP with a long-lived connection - results and deferred?

Oon-Ee Ng ngoonee.talk at gmail.com
Wed Oct 28 00:24:24 MDT 2015


Working off the example ampserver.py and ampclient.py examples, I
wanted to build a client which maintains a single connection while
allowing the passing of messages back and forth. However I'm stuck at
one of the most basic steps, getting back the result (without
'completing' the connection).

The ampclient.py example simply connects, does a callRemote on the
resulting protocol, and adds callbacks to extract the result from a
dictionary and print it. The deferred being used in this case is
produced by connectProtocol.

I'm trying to write a client (inheriting from amp.AMP) which is
embedded in a kivy GUI, something which is quite possible using the
_threadedselect reactor.

On connection, I use the connectionMade method to save the 'self' (in
this case, the client inheriting from amp.AMP) in my kivy app. I can
then call a function which does a callRemote on this saved client,
which indeed triggers the server appropriately.

The callRemote returns a deferred (from reading docs online, a remote
reference). I can't figure out what to do with it, specifically in
terms of getting the result ('total', when calling Sum from
ampserver.py).

Assistance much appreciated.



More information about the Twisted-Python mailing list