[Twisted-Python] Advice sought on application evolution

Phil Mayers p.mayers at imperial.ac.uk
Sat Mar 22 08:21:57 EDT 2008

> In Python 2.5, I can say this more cleanly:
> @defer.inlineCallbacks
> def frobulate():
>    step_1()
>    step_2()
>    step3Rslt = yield step_3_async()
>    step_4()
>    step_5()
>    returnValue(result5)
> This is looking a lot better, but still the asynchrony of step_3 "shows 
> through".  (Again, I'm taking the viewpoint of someone trying to 
> understand, maintain, and extend the functionality of the application, 
> without having the asynchronous aspects "thrust in his face" more than 
> absolutely necessary.)

The feeling amongst a lot of people, myself included, is that it's a 
*good* thing that the asynchronous nature shows. If you attempt to hide 
it, you forget the actual nature of the problem and start forgetting 
some fundamental problems that might occur.

A related example is Twisted's Perspective Broker - it explicitly has 
remoteref.callRemote('name', *args) semantics, so that callers are aware 
the errors returned could be any one of the network-related ones, as 
well as errors from the call itself.

> Of course, I can avoid all this by going to a threading or separate 
> process solution, but I'd like to find out if I'm missing something 
> before I make such a commitment.
> Thanks for any good words,

More information about the Twisted-Python mailing list