HDEラボの桜井です。
だいぶ涼しくなりました。
そういえば、9/10にFacebookがPython用Webサーバーフレームワーク「Tornado」をリリースしました。
FriendFeedの基盤となっていて、スケーラブルでノンブロッキングなWebサーバーだとか。
早速ですが、インストールして試してみました。
まず、ここからソースをダウンロードします。
ちなみに、Python2.5、2.6でしか動かないようです。CentOS5.3のPython2.4では文法エラーでビルドに失敗してました。
下記のように導入します。
さっそく、チュートリアルらしきものにしたがってプログラミング。
8888/TCPで待ち受けて、「HELO」と返すだけです。
面倒なのでPythonシェルで。
別のターミナルを立ち上げてアクセス。
感想としては...
もうちょっと細かいところを見てみないとわかりませんが、ちょっと楽しみなやつです。
ちなみに、ApacheLicenseです!!
だいぶ涼しくなりました。
そういえば、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です!!