Python3でTornadoを動かしてみる
久しぶりの更新ですね。やっぱり習慣化してないとブログ書くのも大変ですね。。。
なので頑張って習慣化する為、1記事書きます!
内容は今勉強中のTornadoについてです。
Tornadoとは?
そもそもTornadoってなんでしょう?
Webフレームワークの一つですね。公式サイトは以下からどうぞ
↓
http://www.tornadoweb.org/en/stable/#
公式サイトによると、
TornadoはFriendFeedで開発されたPythonのWebフレームワーク(非同期通信ライブラリ)です。
ノンブロッキングネットワークI / Oを使用することで、Tornadoは数万のオープン接続に拡張でき、
ロングポーリング、WebSocket、および各ユーザーへの長時間の接続が必要なその他のアプリケーションに最適です。
とあります。
つまりどゆこと??ってなりますよね。
とりあえず以下の特徴があるんだな程度の認識を持って頂ければよいかと。
・FriendFeedが開発(Facebook社)
・Python2系, Python3系, PyPyで動作する
・シンプルだから高速に動作する
・テンプレートエンジンが同梱されている
・シングルプロセス、シングルスレッド
特にパフォーマンスに関しては目を見張るものがあります。
以下にベンチマーク結果を紹介しておきます。
※Wiki参照です。
https://ja.wikipedia.org/wiki/Tornado_(Web%E3%82%B5%E3%83%BC%E3%83%90)
Tornadoのインストール
以下コマンドでTornadoをインストール
$ pip install tornado
Hello Worldを表示させる
公式サイトにサンプルソースコードが紹介されているのでそのままコピペして動かしてみる。
import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") def make_app(): return tornado.web.Application([ (r"/", MainHandler), ]) if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start()
簡単にコードを簡単に説明する。
class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") RequestHandlerクラスのgetメソッドを継承し、HTTPリクエストGETが来た場合 self.writeにより”Hello World”を表示する。 def make_app(): return tornado.web.Application([ (r"/", MainHandler), ])
r"/"のrは正規表現を表す。"/"は現在の階層を差す。つまりカレントディレクトリである。
なのでlocalhost/にブラウザからアクセスするとMainHandkerクラスが呼ばれ、アクセスがGETであれば
Hello Worldをブラウザに表示する仕組みだ。
HTMLページをブラウザに表示させる
import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.write(''' <!DOCTYPE html> <html> <head> </head> <body> <p><font size="10" color="#00ff00">Test!</font></p> </body> </html> ''') class MainHandler2(tornado.web.RequestHandler): def get(self): self.write("Hello, samurai") def make_app(): return tornado.web.Application([ (r"/", MainHandler), (r"/test/", MainHandler2), ]) if __name__ == "__main__": app = make_app() app.listen(8888) tornado.ioloop.IOLoop.current().start()
サンプルコードにヒアドキュメント形式でHTMLをPythonプログラム内に埋め込んでいる。
実行して頂ければ分かると思うが、これでも一応HTNLを表示することは出来る。
おそらくこのような方法でHTMLを表示させたいんじゃないんだ!!って方が多いと思いますので
次回TornadoプログラムからHTMLファイルを呼び出す方法をご紹介したいと思います。
それでは今回ははここまでです。
閲覧しに来てくださった方ありがとうございました。