Tornado Web Server (Python用Webサーバフレームワーク)

| | Comments (0) | TrackBacks (0)
HDEラボの桜井です。
だいぶ涼しくなりました。

そういえば、9/10にFacebookがPython用Webサーバーフレームワーク「Tornado」をリリースしました。
FriendFeedの基盤となっていて、スケーラブルでノンブロッキングなWebサーバーだとか。

早速ですが、インストールして試してみました。
まず、ここからソースをダウンロードします。
ちなみに、Python2.5、2.6でしか動かないようです。CentOS5.3のPython2.4では文法エラーでビルドに失敗してました。
下記のように導入します。
# tar tornado-0.1.tar.gz
# cd tornado-0.1
# python setup.py install

さっそく、チュートリアルらしきものにしたがってプログラミング。
8888/TCPで待ち受けて、「HELO」と返すだけです。
面倒なのでPythonシェルで。
$ python
Python 2.6.1 (r261:67515, Mar 26 2009, 15:57:10)
[GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import tornado.httpserver
>>> import tornado.ioloop
>>> import tornado.web
>>>
>>> class MainHandler(tornado.web.RequestHandler):
...   def get(self):
...     self.write("HELO\n")
...
>>> application = tornado.web.Application([(r"/", MainHandler),])
>>>
>>> http_server = tornado.httpserver.HTTPServer(application)
>>> http_server.listen(8888)
>>> tornado.ioloop.IOLoop.instance().start()

別のターミナルを立ち上げてアクセス。
$ telnet localhost 8888
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.0 200 OK
Content-Length: 4
Etag: "50d7c437b1b17589574e811d5085ed34a4b22340"
Content-Type: text/html; charset=UTF-8
Server: TornadoServer/0.1

HELO
Connection closed by foreign host.


感想としては...
  • Googleのwebappやweb.pyに似ている(と書いてあるし、その通り)
  • applicationを定義してる辺りはTwistedみたい
  • RESTやるならいいんじゃない?
ってところでしょうか?

もうちょっと細かいところを見てみないとわかりませんが、ちょっと楽しみなやつです。
ちなみに、ApacheLicenseです!!

0 TrackBacks

Listed below are links to blogs that reference this entry: Tornado Web Server (Python用Webサーバフレームワーク).

TrackBack URL for this entry: http://lab.hde.co.jp/blog/mt-tb.cgi/151

Leave a comment

About this Entry

This page contains a single entry by Takeshi SAKURAI published on September 11, 2009 4:44 PM.

Devel::NYTProfを使ってみた。 was the previous entry in this blog.

ペアプログラミングをやってみた。 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.