Tornado – Asynchronous Requests


Tornado is a non-blocking I/O web server. In Tornado, when the request handler serves the request made by the client, the request is closed by itself. Python decorator @tornado.web.asynchronous can be used to override the default behavior (of automatically finishing the request) and keep the request open. So, its the duty of the server developer to finish the request.

Example

In the above example, When user browses to http://127.0.0.1/, AsyncHandler handles it and sends a GET request to http://google.co.in and receives the response. Processing of this response is done by _async_callback() method. Thus in this example, when get() returns, the request has not been finished. Once the response is processed and self.finish() is called, only then request is completed.

If the developer fails to finish the request with self.finish(), the browser hangs as in the picture below.

Advertisements

3 thoughts on “Tornado – Asynchronous Requests

  1. Hi edisam,
    1. Tornado’s ioloop doesn’t support Win file descriptors; it supports epoll and kqueue, that’s unavailable on Windows.
    2. “Is possible to use Tornado with httplib2 module?” – didn’t get the essence of the question? Isn’t this example using httplib2 to make requests, response of which are handled by Tornado async callback?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s