力王のオフィシャルサイトですこの広告は、90日以上更新していないブログに表示しています。2009-09-28tornadoの話Python話題のtornadoについてちょっと書いておきます。フレームワークについてtornadoは一応wsgiをサポートしていますが本気で組むなら独自で持ってるAPIの方がよいでしょう。独自のAPIの方は必要最低限な処理しかしません。無駄なアプリケーションコードを少なくすることでパフォーマンスを得ています。アプリケーションコード実行間はブロックしていますが、その時間をなるべく少なくしようという観点で薄いフレームワークになっています。(ほとんど1ファイルの小さなモジュールになっているはずです)ここで変にwsgi対応のFWを乗せたりしようもんならパフォーマンスはかなり落ちるのでやらない方がいいでしょう。wsgiはインターフェイスがぬるいためFW側で結構な量のコード実行することになります。いってpythonはそこまで速くありませんのでチリも積もれば。いった感じでかなり遅くなります。(気になる方はcProfileで統計を取ってみるといいでしょう)またtornadoはレスポンスのMD5でETagを発行します。レスポンスを作るまでは通常同様呼ばれますが、MD5が一致すれば304でレスポンスには空文字を送り、少しだけ処理を軽減します。Non-blocking他のリソース(DBのデータなど)を参照するときのブロックを回避するためにははHTTP経由でデータを取得します。DBを直でNon-blockingで引くのは実質ほぼ不可能(ドライバ次第ですが)なので、DBの値を返す別サーバにNon-blockingで問い合わせます。clientがついています。pollingの状態になります。この間もイベントドリブンになっているため、DBの値が返ってくるまでは他の処理を実行し続けます。DBの値が返ってくるとイベントがあがってきて元の処理へ返って処理を続行します。スループットをあげたいのであれば別途DBの値を返すJSONRPCサーバのようなサーバを立てておくべきでしょう。(FriendFeedはそのサーバもtornadoで書いてそうなイメージですが)運用の話ブロックしたらアウトな設計です。期待しても何もでてきません。Balancerがいて、振り分けることによって処理する前提になっています。-1とかでtonrnadoサーバを立て、LBで振り分ける)静的ファイルも同様フロントでよろしくやれという前提です。forkしてもいいんじゃね?という話もありますが、log周りがそーいう前提になっていないのでダメです。結論tornadoは前提を踏まえて作りこまない限り、それほどのスループットを出せないはずです。それほど万人向けではないはないので自信がないひとはtornadoではなく、mod_wsgiなどの構成をお勧めします。振り返り月別アーカイブはてなブログをはじめよう!mopemopeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。