[Twisted-web] Deferred inside XMLRPC method

Colin Alston karnaugh at karnaugh.za.net
Thu Aug 30 07:09:58 EDT 2007

On 30/08/2007 12:55 Daniel de la Cuesta wrote:
>   Hi,
> I am developing an middleware XMLRPC Server. It connects with a mail 
> server and provides and XMLRPC interface to read and send mail.
> Is there any way to return the result of the xmlrpc method in deferred's 
> callback?
> Is there any way to return a deferred object inside the xmlrpc method?
> Is it a good solution using asynchronous chunks (deferreds) inside a 
> synchronous protocol as it is XML-RPC (HTTP)?

I use this pattern on the server side

def xmlrpc_getStuff(self, stuff):
     def fail(_):
         print "Oh dear!"
         return False

     def returnStuff(dbResult):
         otherstuff = doStuffWith(dbResult)
         return otherStuff

     return self.db.getStuff(stuff).addCallbacks(returnStuff, fail)

And this one on the client side

def checkKey(stuff):
     def fail(_):
         return False
     def good(stuff):
         return stuff
     return Proxy(xmlServer, allowNone=True).callRemote('getStuff', 
stuff).addCallbacks(good, fail)

There are better ways depending on what you're really doing..

Colin Alston ~ http://www.karnaugh.za.net/
"To the world you may be one person, to one person you may be the 
world" ~ Rachel Ann Nunes.

Terms and conditions: http://www.karnaugh.za.net/email.rpy

More information about the Twisted-web mailing list