Tornado
=======
Tornado is an open source version of the scalable, non-blocking web server
and and tools that power FriendFeed. Documentation and downloads are
available at http://www.tornadoweb.org/

Tornado is licensed under the Apache Licence, Version 2.0
(http://www.apache.org/licenses/LICENSE-2.0.html).

Installation
============
To install:

    python setup.py build
    sudo python setup.py install

Tornado has been tested on Python 2.5 and 2.6. To use all of the features
of Tornado, you need to have PycURL and (for Python 2.5 only) simplejson
installed.

On Mac OS X 10.6, you can install the packages with:

    sudo easy_install pycurl

On Ubuntu Linux, you can install the packages with:

    # Python 2.6
    sudo apt-get install python-pycurl

    # Python 2.5
    sudo apt-get install python-dev python-pycurl python-simplejson

