_images/tornado.png

概要

FriendFeedでは、Pythonで書かれた、比較的シンプルで、ノンブロッキング実装のされたウェブサーバを使用しています。FriendFeedアプリケーションは、web.pyや、Googleのwebappに良く似たウェブのフレームワークを使用して書かれていますが、このノンブロッキングウェブサーバと周辺ツールを利用することによるアドバンテージを生かして、追加のツールや最適化が行われています。

Tornadoはこのウェブサーバと、私たちがFriendFeedで頻繁に使用しているツールのうちのいくつかを含んだ、オープンソースバージョンです。このフレームワークはノンブロッキングで、適切な速さを備えているということで、主流となっている、ほとんどのウェブサーバフレームワーク(特に、ほとんどのPythonのフレームワーク)とは異なっています。速さの理由としては、ノンブロッキングで、なおかつepollを利用しているということがあげられ、その結果として数千のコネクションを同時に扱うことができます。これは、このフレームワークがリアルタイムのウェブサービスにとって理想的なものであるということを示しています。私たちは、主に、FriendFeedのリアルタイムで提供される機能をサポートするためにウェブサーバを開発しました。FrinedFeedのアクティブユーザは全員、FriendFeedに対してオープンなコネクションを常に張っています。数千のクライアントをサポートするためのサーバーのスケーリングの情報については、C10K問題を参照してください。

規律に従って、伝統の”Hello, world”のサンプルアプリケーションを紹介します:

import tornado.httpserver
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__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

tornado.web パッケージの詳細のウォークスルーについては、後半の章に書いてあります。

私たちは、モジュール間の相互依存性を減らそうと、コードベースをきれいにしようとしています。理論的には、パッケージ全体を使用するのではなく、必要なモジュールを個別に使用できるようにすべきです。

ダウンロード

Tornadoの一番最新のバージョンGitHubからダウンロードします:

tornado-0.2.tar.gz

GitHub上でソースコードをブラウズすることもできます。Tornadoをインストールするには以下のようにします:

tar xvzf tornado-0.2.tar.gz
cd tornado-0.2
python setup.py build
sudo python setup.py install

インストールが終わったら、Tornadoのパッケージに含まれる demos ディレクトリ内のデモをいくつか実行してみてください:

Tornadoのインストールに必要なもの

TornadoはPython 2.5, 2.6でテストされています。Tornadoのすべての機能を使用するためには、PycURLsimplejsonなどのJSONライブラリをインストールする必要があります。Mac OS XとUbuntuで必要なものを一括でインストールするには、以下のようにします。

Mac OS X 10.5/10.6

sudo easy_install setuptools pycurl==7.16.2.1 simplejson

Ubuntu Linux

sudo apt-get install python-dev python-pycurl python-simplejson

目次

前のトピックへ

Tornadoドキュメント翻訳

次のトピックへ

モジュールインデックス

このページ