top | item 823631

Tornado as your server: WSGI container lands in Tornado

29 points| masklinn | 16 years ago |github.com | reply

6 comments

order
[+] jacquesm|16 years ago|reply
please take note of this very important caveat:

> Since no asynchronous methods are available for WSGI applications, the

> httpclient and auth modules are both not available for WSGI applications.

The reason for the omission of the httpclient because of the inability of a WSGI application to set up and retrieve resources without blocking the whole process is clear enough, but I fail to see how the authentication module should suffer from this as well.

[+] n8agrin|16 years ago|reply
A brief glance at the code shows that the auth module is omitted because certain classes in the lib (OAuth, OpenID, etc) use the httpclient, specifically the class httpclient.AsyncHTTPClient.
[+] PhilChristensen|16 years ago|reply
okay, i give up.

explain to me how it's possible to run any significant WSGI app inside this container. wouldn't any long-running request monopolize the whole server?

i don't have a lot of exposure to other WSGI apps besides my own, but I always use synchronous, blocking development techniques when building them, including blocking database calls.

[+] kingkilr|16 years ago|reply
That's correct. This is why most WSGI people (such as Graham Dumpleton, author of mod_wsgi) are opposed to adding any sort of async stuff to the WSGI spec as well.
[+] dlsspy|16 years ago|reply
twisted does it by using deferToThread (so the call sits in a thread pool and the reactor doesn't block).

I suppose they just need their twisted loop clone thing to implement deferToThread now.