[python-uk] Tell us what you did with Python this year....

Doug Winter doug.winter at isotoma.com
Wed Dec 22 12:38:35 CET 2010


Reza Lotun wrote:
> # async friendly version of the above
> def get_foo_nicer(arg1, arg2):
>     args = prepare_request()
>     result = make_maybe_blocking_call()
>     def post_process(result):
>         do_stuff(result)
>         do_more_stuff(result)
>     post_process(result)
> 
> The second version is exactly the same as the previous, but now it
> becomes much easier to make it async (rather, Twisted aware). The key

Nice idea making your synchronous code work like this too.

Have you considered using the @inlineCallbacks decorator instead?  I bet
you could make that work too, you could write your own decorator that
uses inlineCallbacks or something synchronous, then the above becomes:

@cleverInlineCallbacks
def get_foo(arg1, arg2):
    args = prepare_request()
    result = yield make_maybe_blocking_call()
    do_stuff(result)
    finalValue = do_more_stuff(result)
    defer.returnValue(finalValue)

Which can be a lot neater when you get stacks and stacks of callbacks.
Python's lack of a block construct otherwise makes that really unpleasant.

Cheers,

Doug.

-- 
Telephone: +44 1904 567330, Mobile: +44 7879 423002
Switchboard: +44 1904 567349, Fax: +44 20 79006980
Post: Tower House, Fishergate, York, YO10 4UA, UK

Registered in England.  Company No 5171172.  VAT GB843570325.
Regd Office: 3&4 Park Court, Riccall Road, Escrick, York, YO19 6ED


More information about the python-uk mailing list