Tornado is an open source version of the scalable, non-blocking web server and tools that power
FriendFeed. The FriendFeed application is written using a web framework that looks a bit like
web.py or
Google's webapp, but with additional tools and optimizations to take advantage of the underlying non-blocking infrastructure.
The framework is distinct from most mainstream web server frameworks
(and certainly most Python frameworks) because it is non-blocking and
reasonably fast. Because it is non-blocking and uses
epoll
or
kqueue
,
it can handle thousands of simultaneous standing connections, which
means it is ideal for real-time web services. We built the web server
specifically to handle FriendFeed's real-time features — every active
user of FriendFeed maintains an open connection to the FriendFeed
servers. (For more information on scaling servers to support thousands
of clients, see The
C10K problem.)
Upgrading from Tornado 1.x
Tornado 2.0 introduces several potentially backwards-incompatible changes,
including in particular automatic escaping of template output. Users
who are upgrading from Tornado 1.x should see the
release notes for
information about backwards compatibility.
Quick links
Hello, world
Here is the canonical "Hello, world" example app for Tornado:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
See the
Tornado documentation for a detailed walkthrough of the framework.
Installation
Automatic installation: Tornado is listed in
PyPI and can be installed with
pip
or
easy_install
.
Note that the source distribution includes demo applications that are
not present when Tornado is installed in this way, so you may wish to
download a copy of the source tarball as well.
Manual installation: Download
tornado-2.4.1.tar.gz
tar xvzf tornado-2.4.1.tar.gz
cd tornado-2.4.1
python setup.py build
sudo python setup.py install
The Tornado source code is
hosted on GitHub. On Python 2.6 and 2.7, it is also possible to simply add the tornado directory to your
PYTHONPATH
instead of building with
setup.py
, since the standard library includes
epoll
support.
Prerequisites: Tornado runs on Python 2.5, 2.6, 2.7 and 3.2.
- On Python 2.6 and 2.7, there are no dependencies outside the Python standard library, although PycURL (version 7.18.2 or higher required; version 7.21.1 or higher recommended) may be used if desired.
- On Python 2.5, PycURL is required, along with simplejson and the Python development headers (typically obtained by installing a package named something like
python-dev
from your operating system).
- On Python 3.2, the distribute package is required. Note that Python 3 support is relatively new and may have bugs.
Platforms: Tornado should run on any Unix-like platform, although
for the best performance and scalability only Linux and BSD (including
BSD derivatives like Mac OS X) are recommended.
Discussion and support
You can discuss Tornado and report bugs on
the Tornado developer mailing list. Links to additional resources can be found on the
Tornado wiki.
.
这样我们的运行在tornado下的helloword例子就运行起来了,在浏览器中访问: http://IP:8888,就可以看到helloworld了.
is a Python web framework and
asynchronous networking library, originally developed at
. By using non-blocking network I/O, Tornado
can scale to tens of thousands of open connections, making it ideal for
, and other
applications that require a long-lived connection to each user.
Installation
Automatic installation:
pip install tornado
Tornado is listed in
PyPI and
can be installed with
pip or
easy_install. Note that the
source distribution includes demo applications that are not present
when Tornado is installed in this way, so you may wish to download a
copy of the source tarball as well.
Manual installation: Download the latest source from
PyPI.
tar xvzf tornado-$VERSION.tar.gz
cd tornado-$VERSION
python setup.py build
sudo python setup.py install
The Tornado source code is
hosted on GitHub.
Prerequisites: Tornado runs on Python 2.6, 2.7, 3.2, and 3.3. It has
no strict dependencies outside the Python standard library, although some
features may require one of the following libraries:
-
unittest2 is needed to run
Tornado's test suite on Python 2.6 (it is unnecessary on more recent
versions of Python)
-
concurrent.futures is the
recommended thread pool for use with Tornado and enables the use of
tornado.netutil.ThreadedResolver. It is needed only on Python 2;
Python 3 includes this package in the standard library.
-
pycurl is used by the optional
tornado.curl_httpclient. Libcurl version 7.18.2 or higher is required;
version 7.21.1 or higher is recommended.
-
Twisted may be used with the classes in
tornado.platform.twisted.
-
pycares is an alternative
non-blocking DNS resolver that can be used when threads are not
appropriate.
-
Monotime adds support for
a monotonic clock, which improves reliability in environments
where clock adjustments are frequent. No longer needed in Python 3.3.
Platforms: Tornado should run on any Unix-like platform, although
for the best performance and scalability only Linux (with
epoll)
and BSD (with
kqueue) are recommended (even though Mac OS X is
derived from BSD and supports kqueue, its networking performance is
generally poor so it is recommended only for development use).