[Twisted-Python] Re: gthreadless.py
Itamar Shtull-Trauring
itamar at itamarst.org
Tue Aug 30 10:40:41 MDT 2005
On Tue, 2005-08-30 at 08:47 +0200, Stefano Masini wrote:
> Here is an example that makes justice to this approach. It involves
> Perspective Broker. Think of writing a web frontend to an application
> on the backend that exports functionality through pb. (the code may
> not work, I'm just making it up now without testing it)
> (I hope everybody is familiar with nevow.stan. If not, take a look at
> it. It's worth.)
>
> @deferredGreenlet
> def renderPage(self):
> dataList = [ blockOn(self.backend.callRemote('getDataFromId', elementId))
> for elementId in self.idList]
> return T.html[ T.body [ 'The result:', T.br, [ (txt, T.br) for txt
> in dataList ] ] ]
Let me give a counterargument to this specific example - regardless of
whether it uses greenlets or just Deferreds: it's slow. Really in this
case you'd want callRemote("getDataFromIds", self.idList), or at least
to run all the getDataFromId() in parallel, *not* wait for one to finish
before calling the other.
That being said, I have seen code where something like greenlets or
defgen really makes the code much easier to read, so having one of those
is worthwhile.
More information about the Twisted-Python
mailing list