[Twisted-Python] Stackless Python Examples Re: InlineCallback Friendly ?

Hi Folks: --- Andrew Francis <andrewfr_ice@yahoo.com> wrote: [J-P Calderone]
[A Francis]
Once again Jean-Paul, I find your explanation super helpful and save me time going down the wrong path.
Based on Jean-Paul's explanation, here are some code snippets showing how to handle other protocols with Stackless Python and Twisted. This is a continuation of the technique I used in "Adventures" to prevent the reactor from deadlocking. Currently I am rethinking the techniques - I believe there is a way to reduce spawning tasklets - not that tasklets are all that expensive.... Here is an example with resources adapted from the Abe Fettig example on page 48 of "Twisted Network Programming Essentials." I am still getting my feet wet with resources. I intend to use this to help prototype REST support in WS-BPEL. class HomePage(resource.Resource): def doWork(self): message = """ <html> <head> </head> <body> Hello World </body> </html> """ self.request.write(message) self.request.finish() def render(self, request): self.request = request stackless.tasklet(self.doWork)() return server.NOT_DONE_YET and here is one with PyAMF .2 (I remember sketching this one out on a napkin at PyCon 2008) class EchoServer(TwistedGateway): def __init__(self): super(EchoServer, self).__init__() self.request = None return def __echo__(self, request, deferred, y): print "=>", request, deferred, y deferred.callback(y) def echo(self, request, y): print "=>", request, y deferred = defer.Deferred() stackless.tasklet(self.__echo__)(request, deferred, y) return deferred Cheers, Andrew ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
participants (1)
-
Andrew Francis