| {% extends "base.html" %} |
| |
| {% block body %} |
| <p><a href="http://www.tornadoweb.org/">Tornado</a> is an open source version of the scalable, non-blocking web server and tools that power <a href="http://friendfeed.com/">FriendFeed</a>. The FriendFeed application is written using a web framework that looks a bit like <a href="http://webpy.org/">web.py</a> or <a href="http://code.google.com/appengine/docs/python/tools/webapp/">Google's webapp</a>, but with additional tools and optimizations to take advantage of the underlying non-blocking infrastructure.</p> |
| <p>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 <a href="http://www.kernel.org/doc/man-pages/online/pages/man4/epoll.4.html"><code>epoll</code></a> or <code>kqueue</code>, 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 <a href="http://www.kegel.com/c10k.html">C10K problem</a>.)</p> |
| |
| <h2>Upgrading from Tornado 1.x</h2> |
| |
| <p>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 |
| <a href="/documentation/releases/v2.0.0.html">release notes</a> for |
| information about backwards compatibility.</p> |
| |
| <h2>Quick links</h2> |
| |
| <ul> |
| <li><a href="/documentation/index.html">Documentation</a></li> |
| <li><a href="https://github.com/downloads/facebook/tornado/tornado-{{version}}.tar.gz">Download version {{version}}</a> (<a href="/documentation/releases.html">release notes</a>)</li> |
| <li><a href="https://github.com/facebook/tornado">Source (github)</a></li> |
| <li><a href="http://groups.google.com/group/python-tornado">Mailing list</a></li> |
| <li><a href="http://github.com/facebook/tornado/wiki/Links">Wiki</a></li> |
| </ul> |
| |
| <h2>Hello, world</h2> |
| <p>Here is the canonical "Hello, world" example app for Tornado:</p> |
| <pre><code>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()</code></pre> |
| <p>See the <a href="/documentation/index.html">Tornado documentation</a> for a detailed walkthrough of the framework.</p> |
| |
| <h2>Installation</h2> |
| |
| <p><b>Automatic installation:</b> Tornado is listed in <a href="http://pypi.python.org/pypi/tornado">PyPI</a> and can be installed with <code>pip</code> or <code>easy_install</code>. 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.</p> |
| |
| <p><b>Manual installation:</b> Download <a href="http://github.com/downloads/facebook/tornado/tornado-{{version}}.tar.gz">tornado-{{version}}.tar.gz</a></p> |
| <pre><code>tar xvzf tornado-{{version}}.tar.gz |
| cd tornado-{{version}} |
| python setup.py build |
| sudo python setup.py install</code></pre> |
| <p>The Tornado source code is <a href="http://github.com/facebook/tornado">hosted on GitHub</a>. On Python 2.6 and 2.7, it is also possible to simply add the tornado directory to your <code>PYTHONPATH</code> instead of building with <code>setup.py</code>, since the standard library includes <code>epoll</code> support.</p> |
| |
| <p><b>Prerequisites:</b> Tornado runs on Python 2.5, 2.6, 2.7 and 3.2. |
| <ul> |
| <li>On Python 2.6 and 2.7, there are no dependencies outside the Python standard library, although <a href="http://pycurl.sourceforge.net/">PycURL</a> (version 7.18.2 or higher required; version 7.21.1 or higher recommended) may be used if desired.</li> |
| <li>On Python 2.5, PycURL is required, along with <a href="http://pypi.python.org/pypi/simplejson/">simplejson</a> and the Python development headers (typically obtained by installing a package named something like <code>python-dev</code> from your operating system).</li> |
| <li>On Python 3.2, the <a href="http://pypi.python.org/pypi/distribute">distribute</a> package is required. Note that Python 3 support is relatively new and may have bugs.</li> |
| </ul></p> |
| |
| <p><b>Platforms:</b> 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.</p> |
| |
| <h2>Discussion and support</h2> |
| <p>You can discuss Tornado and report bugs on <a href="http://groups.google.com/group/python-tornado">the Tornado developer mailing list</a>. Links to additional resources can be found on the <a href="http://github.com/facebook/tornado/wiki/Links">Tornado wiki</a>. |
| |
| {% end %} |