ページ

2009年9月24日

Tornadoの最初の印象

今噂のTornadoを少し触ってみました。と言っても、ホームページのHello, worldのサンプルを動かすぐらいですが・・・。

で、Hello, worldを見て、「雰囲気がTwistedに似ている」というのが最初の印象です。まあ、Tornadoを作った人たちは最初はTwistedを使おうとしていたらしいので、似ていて当然かもしれません。URLのディスパッチはRoutっぽいです。うーん、Railsっぽいです。TwistedやZopeみたいにURL Traversalするとコストがかかるので、賢明な選択かもしれません。

パフォーマンスがいいと言う評判だったので、自分で計測したかったのですが、めんどくさくなたので、やめました。mopemopeさんのお仕事(多分これ)です。生のデータしかのっていないので、よく分かりません。
パフォーマンスに関するTornadoのドキュメントを見るとすごそうです。でも、これって、Hello, worldでベンチマークしたものです。あまりにも処理が少なすぎます。実質HTTPのハンドリングする時間だけです。Hello, Worldのハンドラーが処理する時間ってほとんどありません。そうなってくると、他のフレームワークが培ってきたものはかえってあだになります。新しいものはそれだけコード量が少ないし・・・。それから、Tornadoはepollを使おうが、なんでもいいですが、シングルスレッドで動いています。で、handlerが少し重い処理をしたら、全体がとまります。他のフレームワークがスレッドなりで効率化しようとしていますが、Tornadoは(少なくとも現状は)無理です。まあ、ロングポーリングするようなところには向いているので、適用分野がちがうのかもしれません。でも、そうなら、ページに載っているベンチマークってあんまり意味がないような・・・。
で、多分、そんな風に思った理由がwsgiのコンテナとして機能するからかもしれません。wsgiのコンテナとして使うのなら、非同期IOのメリットが受けられれないTornadoは不利というか、向いていません。wsgiアプリがmultiprocessingとか、スレッドとかで動いていると思ったら、ここもすべてシングルスレッドで動いていました。まあ、そのうち、プロセスなりスレッドなりで動作するのかもしれません。それとも、プロセスをもっと立ち上げろと言うこと?まあ、少なくとも、ベンチマークの結果は気にしちゃいけない、もしくは自分のアプリで計測しろ、ということでしょう。

Python界ではWebアプリケーションと言えばWSGIばかりです。Twistedのにおいは感じますが、それでも別の仕組みのフレームワークが出てきたことはやっぱり楽しいです。でも、それを使うかどうかはちょっと微妙。多分、しばらくはウォッチすると思いますが・・・。それから、みんな騒ぎすぎ。というか、ほめすぎ。もしくは僕が否定的すぎ。でも、好きな子ほどいじめるので仕方ないです。

0 件のコメント: