you can take a piece of code that was written using synchronous calls, and mechanically translate it into a tasklet: just decorate your functions with @tasklets.tasklet and change your synchronous calls from
result = some_function(args)
into
result = yield some_function_async(args) """
I feel like this style of coding (e.g twisted) is stretching python generators a bit far... are callbacks really that hard to work with? And this is clever and all, but what happens when you forget the yield call, or when there is an exception somewhere down the line, how hard will it be to figure out what is going wrong? I would prefer the work went into better function literals in python along with a node.js style approach.
That aside, glad to see better asynchronous support coming to app engine, using:
http://code.google.com/p/asynctools
has already been a big help for constructing complex pages that require a few different queries.