Pages

Thursday, 31 January 2013

Tornado

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 is one of Facebook's open source technologies.

from  http://www.tornadoweb.org/,http://www.tornadoweb.cn/documentation

related post:  http://briteming.blogspot.com/2013/03/tornado-supervisor.html
-------------------------------------------------------

tornado安装运行helloworld的例子


运行环境是ubuntu10.04
tornado的网站地址:
http://www.tornadoweb.org/
下载最新的安装包:
https://github.com/downloads/facebook/tornado/tornado-2.4.tar.gz
下载后解压,安装
tar zxvf tornado-2.4.tar.gz 
cd tornado-2.4
python setup.py build
python setup.py install
安装后:
cd demos/helloworld
python helloworld.py
这样我们的运行在tornado下的helloword例子就运行起来了,在浏览器中访问: http://IP:8888,就可以看到helloworld了.
---------------------------------------------------

Tornado Web Server

Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long polling, WebSockets, and other applications that require a long-lived connection to each user.

Hello, world

Here is a simple "Hello, world" example web 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()
This example does not use any of Tornado's asynchronous features; for that see this simple chat room.

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).

Discussion and support

You can discuss Tornado on the Tornado developer mailing list, and report bugs on the GitHub issue tracker. Links to additional resources can be found on the Tornado wiki.
Tornado is one of Facebook's open source technologies. It is available under the Apache License, Version 2.0.
This web site and all documentation is licensed under Creative Commons 3.0.

from  https://github.com/facebook/tornado
https://github.com/tornadoweb/tornado