pythonでWebサーバを簡単に立てれないかなーと思い調べていると、WSGIとFlaskという言葉が出てきましたのでメモ。
WSGIとは? Webサーバとアプリケーションの間をうまいことやってくれるミドルウェア。 pythonで出来てる。 本来はWebサーバとアプリケーションのやりとりは複雑なものだが、WSGIがその連携を上手い事やってくれるみたいです。
こちらの記事を参考にさせて頂きました。 第1回 WSGIの概要:WSGIとPythonでスマートなWebアプリケーション開発を|gihyo.jp … 技術評論社 20.4. wsgiref — WSGI ユーティリティとリファレンス実装 — Python 2.7ja1 documentation WSGIとは?(2) - 愉快な神様とヘタレな下僕
サンプルコード
#-*- coding:utf-8 -*- from wsgiref import util, simple_server class Test(object): def __init__(self): ''' 初期化 ''' self.test = 1 def __call__(self, environ, start_response): '''WSGI アプリケーション ''' ret = "Hello!" start_response('200 OK', [('Content-type', 'text/html; charset=utf-8')]) return ret application = Test() if __name__ == '__main__': srv = simple_server.make_server('', 8080, application) srv.serve_forever()
WSGIはサーバからのレスポンスを取得する為に二つの引数が必要となります。 callの引数がそれに当たりますが、第一引数にCGI環境変数(ディクショナリ)。第二引数にレスポンスのステータスを取ります。
Flaskとは? pythonの軽量なフレームワーク。rubyでいうところのsinatraみたいなもの。 必要最低限のものしか積んでいないらしい。 Werkzeug(ツールキット)とjinja2(テンプレートエンジン)を元に作られている。 Herokuの説明ページにflaskを使った方法を書いていた。。。はずw
こちらの記事を参考にさせて頂きました。 5.flaskを使ってウェブアプリを作成 - Pythonで始めるDropboxAPI | low level life
サンプルコード
-*- coding: utf-8 -*- from flask import Flask,render_template app = Flask(__name__) @app.route("/") def index(): return render_template("index.html") if __name__ == "__main__": app.run()
FlaskはURLルーティングで処理を切り分けます。上のサンプルではlocalhost:5000(flaskはデフォルトポートが5000)にアクセスしたらdef index():の処理が実行されます。 jinja2をテンプレートエンジンとして積んでいますので、templeatesフォルダを作成しておけばその中にあるテンプレートを読み込みます。
この辺をもうすこし掘り下げていきたいです。