Tornadoは元々FriendFeedで開発されたPythonのWebフレームワークと非同期通信ライブラリです。ノンブロッキングネットワークI/Oを使用することでTornadoは数万に至るまでコネクションをオープンでき、ロングポーリングWebSocketsやその他のユーザ毎に長時間に渡るコネクションを必要とするアプリケーションに適しています。

アップグレードの注意点

Tornado3.2では、Python2で実行する場合backports.ssl_match_hostnameパッケージが必要です。pipまたはeasy_installを使った場合は自動的にインストールされます。

クイックリンク

Hello, world

これはTornadoによるシンプルな"Hello, world"サンプルWebアプリケーションです:
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()
このサンプルではTornadoの非同期である特徴を全く使っていません。それについてはこのシンプルなチャットルームの例を見てください。

インストール

自動インストール:
pip install tornado 

TornadoはPyPIにリストされており、pipまたはeasy_installでインストールできます。Tornadoをこの方法でインストールした場合、ディストリビューションがデモアプリケーションを含まないことがあるので、ソースのtarballをダウンロードしたくなるかもしれません。

手動インストール: tornado-3.2.2.tar.gzをダウンロードしてください:
tar xvzf tornado-3.2.1.tar.gz
cd tornado-3.2.1
python setup.py build
sudo python setup.py install 

TornadoのソースコードはGitHubにホストされています。

前提条件: TornadoはPython 2.6, 2.7, 3.2, 3.3で動作します。Python2ではbackports.ssl_match_hostnameパッケージ(pipやeasy_installを使用した場合は自動的にインストールされます)が必要です。Python3ではPython標準ライブラリ以外に厳格な依存はありませんが、いくつかの機能は以下のライブラリを必要とする場合があります:
  • unittest2はPython 2.6においてTornadoのテストスイートを実行するのに必要とされます。(Pythonのより新しいバージョンでは必要とされません。)
  • concurrent.futuresはTornadoで推奨されるスレッドプールで、ThreadedResolverを使えるようになります。Python2でのみ必要で、Python3ではこのパッケージを標準ライブラリに含んでいます。
  • pycurlはtornado.curl_httpclientのオプションとして使用されます。Libcurlのバージョン7.18.2以上が必要ですが、バージョン7.21.1以上が推奨されます。
  • Twistedtornado.platform.twistedのクラスを使うことで利用できます。
  • pycaresはスレッドが適切でない場合に使用できる代替のノンブロッキングDNSリゾルバです。
  • Monotime adds support for a monotonic clock, which improves reliability in environments where clock adjustments are frequent. No longer needed in Python 3.3.

動作環境: TornadoはどのようなUnixライクなプラットフォームでも動作しますが、最高のパフォーマンスとスケーラビリティのためにはLinux(epoll)やBSD(kqueue)が推奨されます。(Mac OS XはBSD由来でkqueueをサポートするにも関わらず、ネットワークパフォーマンスが一般的に貧弱なので開発用途での利用を推奨します。)

ディスカッションとサポート

Tornadoについての議論はTornado開発者メーリングリストで、バグの報告はGitHub issue trackerで行えます。その他の情報へのリンクはTornado wikiにあります。

TornadoはFacebookのオープンソーステクノロジーのひとつです。Apache License, Version 2.0.のもとに利用できます。

このWebサイトと全ての文書はCreative Commons 3.0のもとにライセンスされます。