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ファイルを呼び出す方法をご紹介したいと思います。
それでは今回ははここまでです。
閲覧しに来てくださった方ありがとうございました。
mac book proにPython3の実行環境を構築する
Pythonの勉強を始めて3ヶ月ちょっと経過したので新しいパソコンを購入しました。
なのでmacでのPython3環境を構築する際のメモ書きを残します。
pyenvのインストール
pyenvとは、簡単に言うとPythonのバージョンを管理することができます。バージョン管理もとても簡単でコマンド一つで3系にも2系にもバージョンを変更することができます。
では早速pyenvをインストールしてみます。
macのターミナルを開きpyenvをクローンします。
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
ただしmacにXcodeがインストールされていないと下記のような応答が帰る。
xcode-select: note: no developer tools were found at '/Applications/ Xcode.app', requesting install. Choose an option in the dialog to download the command line developer tools.
そしてXcodeインストールポップアップが表示される。
特に気にする事もなくインストールを押します。
十数分ほど待つと以下のように完了の画面が出てきます。
pyenvにPATHを通す
macの.bash_profileにpyenvのPATHを通します。
その前にmacに.bash_profileが存在するか確認しましょう。
下記コマンドで.bash_profileが表示されれば存在しますが、
表示されなければtouchコマンドで用意しましょう。
$ ls -la|grep "profile"
表示されない場合は下記コマンドで.bash_profileを用意する。
$ cd $ touch .bash_profile
.bash_profileを用意できたらいよいよPATHを通します。
何も考えず下記コマンドを実行
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
念のため確認。
$ cat ~/.bash_profile export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)"
上記のように表示されればOK
pyenvでPython格バージョンをインストールする。
下記コマンドを実行することで任意のバージョンをインストールできる。
※PATHを通した後、一度ターミナルを閉じる必要があります。でないとpyenvコマンドが利用できません。
$ pyenv install 3.4.3 $ pyenv install 2.7.9
インストール後shimをリフレッシュしておく。
$ pyenv rehash
技術ブログのような何か始めます。
はじめまして皆様kyamisamaです。
これから技術関係の備忘録や日常のアレコレをつらつらと書き連ねていこうと思っています。
以前にもブログ的なものを書いていましたが、なかなか続けられず止めてしまいました。
まぁ今回は執筆のメインが技術ブログという事なのでやっていけそうな気はしています。
技術の備忘録はプログラム言語からNW、サーバ系です。
特に今年の5月からPythonを勉強し始めましたので、その記事が多いと思います。
できる限り頻繁に更新したいと思っていますので、どうぞよろしくです。