2013-03-10 19:04:06 +00:00
|
|
|
.. title:: Tornado Web Server
|
2013-03-10 18:25:06 +00:00
|
|
|
|
2013-04-11 03:53:58 +00:00
|
|
|
.. meta::
|
|
|
|
:google-site-verification: g4bVhgwbVO1d9apCUsT-eKlApg31Cygbp8VGZY8Rf0g
|
|
|
|
|
2013-03-10 19:04:06 +00:00
|
|
|
|Tornado Web Server|
|
|
|
|
====================
|
|
|
|
|
|
|
|
.. |Tornado Web Server| image:: tornado.png
|
2013-03-10 18:25:06 +00:00
|
|
|
:alt: Tornado Web Server
|
|
|
|
|
2013-03-11 03:04:06 +00:00
|
|
|
`Tornado <http://www.tornadoweb.org>`_ is a Python web framework and
|
|
|
|
asynchronous networking library, originally developed at `FriendFeed
|
|
|
|
<http://friendfeed.com>`_. By using non-blocking network I/O, Tornado
|
|
|
|
can scale to tens of thousands of open connections, making it ideal for
|
|
|
|
`long polling <http://en.wikipedia.org/wiki/Push_technology#Long_polling>`_,
|
|
|
|
`WebSockets <http://en.wikipedia.org/wiki/WebSocket>`_, and other
|
|
|
|
applications that require a long-lived connection to each user.
|
|
|
|
|
2013-11-05 20:53:51 +00:00
|
|
|
Upgrade notes
|
|
|
|
-------------
|
|
|
|
|
|
|
|
As of Tornado 3.2, the `backports.ssl_match_hostname
|
|
|
|
<https://pypi.python.org/pypi/backports.ssl_match_hostname>`_ package
|
|
|
|
must be installed when running Tornado on Python 2. This will be
|
|
|
|
installed automatically when using ``pip`` or ``easy_install``.
|
2013-03-10 18:25:06 +00:00
|
|
|
|
|
|
|
Quick links
|
|
|
|
-----------
|
|
|
|
|
2013-03-10 20:49:19 +00:00
|
|
|
* :doc:`Documentation <documentation>`
|
|
|
|
* |Download current version|: :current_tarball:`z` (:doc:`release notes <releases>`)
|
2013-03-10 18:25:06 +00:00
|
|
|
* `Source (github) <https://github.com/facebook/tornado>`_
|
|
|
|
* `Mailing list <http://groups.google.com/group/python-tornado>`_
|
|
|
|
* `Wiki <https://github.com/facebook/tornado/wiki/Links>`_
|
|
|
|
|
2013-03-10 19:04:06 +00:00
|
|
|
.. |Download current version| replace:: Download version |version|
|
|
|
|
|
2013-03-10 18:25:06 +00:00
|
|
|
Hello, world
|
|
|
|
------------
|
|
|
|
|
2013-03-11 03:04:06 +00:00
|
|
|
Here is a simple "Hello, world" example web app for Tornado::
|
2013-03-10 18:25:06 +00:00
|
|
|
|
|
|
|
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)
|
2013-03-11 03:04:06 +00:00
|
|
|
tornado.ioloop.IOLoop.instance().start()
|
2013-03-10 18:25:06 +00:00
|
|
|
|
2013-03-11 03:04:06 +00:00
|
|
|
This example does not use any of Tornado's asynchronous features; for
|
|
|
|
that see this `simple chat room
|
|
|
|
<https://github.com/facebook/tornado/tree/master/demos/chat>`_.
|
2013-03-10 18:25:06 +00:00
|
|
|
|
|
|
|
Installation
|
|
|
|
------------
|
|
|
|
|
2013-03-11 03:04:06 +00:00
|
|
|
**Automatic installation**::
|
|
|
|
|
|
|
|
pip install tornado
|
|
|
|
|
|
|
|
Tornado is listed in `PyPI <http://pypi.python.org/pypi/tornado>`_ 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.
|
2013-03-10 18:25:06 +00:00
|
|
|
|
2013-03-11 03:04:06 +00:00
|
|
|
**Manual installation**: Download :current_tarball:`z`:
|
2013-03-10 19:04:06 +00:00
|
|
|
|
|
|
|
.. parsed-literal::
|
2013-03-10 18:25:06 +00:00
|
|
|
|
|
|
|
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
|
2013-03-11 03:04:06 +00:00
|
|
|
<https://github.com/facebook/tornado>`_.
|
|
|
|
|
2013-11-05 20:53:51 +00:00
|
|
|
**Prerequisites**: Tornado runs on Python 2.6, 2.7, 3.2, and 3.3. On
|
|
|
|
Python 2, the `backports.ssl_match_hostname
|
|
|
|
<https://pypi.python.org/pypi/backports.ssl_match_hostname>`_ package
|
|
|
|
must be installed (This will be installed automatically when using
|
|
|
|
``pip`` or ``easy_install``); on Python 3 there are no strict
|
|
|
|
dependencies outside the standard library. Some Tornado features may
|
|
|
|
require one of the following optional libraries:
|
2013-03-11 03:04:06 +00:00
|
|
|
|
|
|
|
* `unittest2 <https://pypi.python.org/pypi/unittest2>`_ is needed to run
|
|
|
|
Tornado's test suite on Python 2.6 (it is unnecessary on more recent
|
|
|
|
versions of Python)
|
|
|
|
* `concurrent.futures <https://pypi.python.org/pypi/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 <http://pycurl.sourceforge.net>`_ is used by the optional
|
2013-03-16 03:09:49 +00:00
|
|
|
``tornado.curl_httpclient``. Libcurl version 7.18.2 or higher is required;
|
2013-03-11 03:04:06 +00:00
|
|
|
version 7.21.1 or higher is recommended.
|
|
|
|
* `Twisted <http://www.twistedmatrix.com>`_ may be used with the classes in
|
|
|
|
`tornado.platform.twisted`.
|
|
|
|
* `pycares <https://pypi.python.org/pypi/pycares>`_ is an alternative
|
|
|
|
non-blocking DNS resolver that can be used when threads are not
|
|
|
|
appropriate.
|
|
|
|
* `Monotime <https://pypi.python.org/pypi/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``)
|
2013-08-18 23:12:07 +00:00
|
|
|
and BSD (with ``kqueue``) are recommended for production deployment
|
|
|
|
(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). Tornado will also run on Windows, although this
|
|
|
|
configuration is not officially supported and is recommended only for
|
|
|
|
development use.
|
2013-03-10 18:25:06 +00:00
|
|
|
|
|
|
|
Discussion and support
|
|
|
|
----------------------
|
|
|
|
|
2013-03-11 03:04:06 +00:00
|
|
|
You can discuss Tornado on `the Tornado developer mailing list
|
|
|
|
<http://groups.google.com/group/python-tornado>`_, and report bugs on
|
2013-04-18 13:33:57 +00:00
|
|
|
the `GitHub issue tracker
|
2013-03-11 03:04:06 +00:00
|
|
|
<https://github.com/facebook/tornado/issues>`_. Links to additional
|
|
|
|
resources can be found on the `Tornado wiki
|
2013-03-10 18:25:06 +00:00
|
|
|
<https://github.com/facebook/tornado/wiki/Links>`_.
|
|
|
|
|
|
|
|
Tornado is one of `Facebook's open source technologies
|
|
|
|
<http://developers.facebook.com/opensource/>`_. It is available under
|
|
|
|
the `Apache License, Version 2.0
|
|
|
|
<http://www.apache.org/licenses/LICENSE-2.0.html>`_.
|
|
|
|
|
|
|
|
This web site and all documentation is licensed under `Creative
|
|
|
|
Commons 3.0 <http://creativecommons.org/licenses/by/3.0/>`_.
|
2011-06-09 06:58:58 +00:00
|
|
|
|
|
|
|
.. toctree::
|
2013-03-10 18:25:06 +00:00
|
|
|
:hidden:
|
|
|
|
|
|
|
|
documentation
|