Skip to content

gen.coroutine support in Templates#1310

Closed
drewmiller wants to merge 3 commits intotornadoweb:masterfrom
drewmiller:master
Closed

gen.coroutine support in Templates#1310
drewmiller wants to merge 3 commits intotornadoweb:masterfrom
drewmiller:master

Conversation

@drewmiller
Copy link

We're building a semi-lazy-loading asynchronous ORM and have found the gen.coroutine decorator to be a great resource. Our objects come out looking something like the below:

Model.attribute = value
Model.reference = Future
Model.collection_name = [Future, Future]

So it's very efficient for us to start generating content from our templates and only wait for references and collections if we need to. Hence, our templates look like the below:

<html>
<head>
   <title>{{ Model.some_value }} </title>
<body>
<h1>{{ yield Model.some_reference }}</h1>
</body>

We love working with the most recent version of Tornado, and aren't willing to break off from the main fork. With that in mind, we're currently using a modified version of the template.py, represented in the pull. If this is something that you aren't interested in incorporating into the main repo, we'll happily subclass as necessary to accomplish it without conflict.

Obviously, it's easier for us to modify the code in place, and I'm happy to help incorporate these changes more thoroughly if you think the feature could be useful in, e.g. the UIModules. Those changes could be non-trivial, however, as I believe ultimately everything that uses a coroutine=True argument will need to be decorated with gen.coroutine. Please correct me if I'm wrong. If so, separate methods for .render() and .render_string() are probably necessary.

@drewmiller drewmiller closed this Jan 24, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant