「Pythonの軽量フレームワークBottleを試してみた」の続き。
せっかく調べたので忘れないようにやったことを書いておこう。
# -*- encoding: utf-8 -*-
from bottle import (
run,
default_app,
route,
request,
response
)
@route('/cookie_test')
def cookie_test():
# cookie取得
_stamp = request.get_cookie("_stamp")
if _stamp is None:
response.set_cookie(
"_stamp",
"some value",
max_age=3888000)
return 'Hello.'
if __name__ == "__main__":
run(host="localhost", port=8080, debug=True, reloader=True)
else:
application = default_app()
get_cookieで読み込み、set_cookieで書き込みます。
max_ageは秒数で、上記の例だとcookieの有効期限は45日後です。指定しないとブラウザを閉じた時にcookieは消えます。
リクエストのルーティングだけしてくれればいいよ、っていう状況で使うフレームワークを探していて出会ったのがBottleでして、面白そうだったので試してみました。
インストールはpip install bottle しただけ。Pythonのバージョンは2.7.5で、Bottleは0.12.5 が入りました。
# -*- coding:utf-8 -*-
from bottle import (
run,
route,
default_app
)
@route('/')
def home():
return 'Hello Bottle.'
@route('/hello/<param:re:[a-zA-Z]+>')
def hello(param):
return 'Hello {0}.'.format(param)
if __name__ == "__main__":
run(host="localhost", port=8080, debug=True, reloader=True)
else:
application = default_app()
上記をapp.pyとして保存し、起動するのは
python app.py
でOK。
http://127.0.0.1:8080
http://127.0.0.1:8080/hello/World
でアクセスできます。
uWSIGIと起動させたい、という場合も
uwsgi –http :8080 –file app.py
で起動できます。あ、uWSGIのパラメーターは一例です。socketでもちゃんと起動します。
速度に関してはPython、go、Ruby、PHPの各フレームワークでのベンチマークを取って公開されている方がいらっしゃるので、そちらをご覧いただければ。
シンプルなAPIだけとか、2〜3ページくらいのコンテンツだったら十分だと思います。Webアプリ一本作る、ってなるんだったらやっぱりDjangoかPyramid使いたいなぁ。