[Stackless] XML-RPC Library

Andrew Francis andrewfr_ice at yahoo.com
Thu Aug 27 19:32:01 CEST 2009


Hi Frederick:

>I'm looking for a non-blocking XML-RPC library for stackless.
>Is it out there ?

If you are willing to learn a little about what is happening under the 
hood, you could use Twisted, in this case, its XML-RPC class. 

Here is a simple example modified from the Twisted XML-RPC page:

import stackless 
from   twisted.web.xmlrpc        import Proxy
from   twisted.internet          import reactor

def blockOn(deferred):
    channel = stackless.channel()
    def success(answer):
        channel.send((True,answer))
    def failure(problem):
        channel.send((False,problem))
    deferred.addCallbacks(success, failure)  
    return channel.receive()


def client():
    proxy = Proxy('http://advogato.org/XMLRPC')
    value = blockOn(proxy.callRemote('test.sumprod', 3, 5))
    print value

stackless.tasklet(client)()
stackless.tasklet(reactor.run)()
stackless.run()

With Twisted, as most reactor based systems, you have to associated a callback with a channel. Here, I happen to use Christopher Armstrong's blockOn() technique. I have found blockOn() suffices for many simple (and not so simple) tasks. There is a little more to it, but not that much more.

Cheers,
Andrew










      




More information about the Stackless mailing list