👏
Python(3) webフレームワーク flask概ね互換で最軽量級 bottlepy
ネット上では概ねdjango/flaskで二分されてるようだ。
しかしそれ以外にももちろん存在する。その中でも最軽量級と思われるのがこれだ。
他所様にいいサンプルソースがあったので Python3 Bottleフレームワーク入門(その1)- 基礎編サーバ起動 使わせてもらおう
from bottle import route, run, template
@route('/hello/<name>')
def index(name):
return template('<b>Hello {{name}}</b>!', name=name)
run(host='0.0.0.0', port=8080)
もうこのサンプルソース7行みただけで、一目瞭然だろう。djangoとは記述量は比べ物にならないほど少ない。
とはいえflaskも非常に書き方が似てるので、何処が違うの?と思うかもしれない。
flaskとは実装スタイルはほとんど変わりません :P
事実、両者のデコレータを同時に設置すれば、重複して実装できる。
ただし、引数の型を指定したい場合には、bottlepyは後置、flaskは前置なので注意。
wsgi, Bottle, Flask の速度差 - Qiita
import flask
import bottle
app = flask.Flask(__name__)
bottle_app = bottle.app()
@bottle_app.route('/')
@app.route('/')
def index():
return b"Hello, World"
def wsgi(env, start):
c = b"Hello, World"
start("200 OK", [('Content-Type', 'text/plain'), ('Content-Length', str(len(c)))])
return [c]
# 起動方法
# Flask: gunicorn -k meinheld.gmeinheld.MeinheldWorker -b :6000 app:app
# Bottle: gunicorn -k meinheld.gmeinheld.MeinheldWorker -b :6000 app:bottle_app
# wsgi: gunicorn -k meinheld.gmeinheld.MeinheldWorker -b :6000 app:wsgi
前出のリンクによれば、bottleはflaskの2倍程度の速度はでるらしい。
他のメリットは、ファイル数が少ないことによる取り回しの簡便さ。
リポジトリに lib とか src とかのディレクトリがないことから一目瞭然である。
いや別にflaskのファイルが多いのが駄目とは言わない。でもbottleで済む実装なら、bottle使ったほうがサーバ設置も楽であろう。
例えば開発ソースと一緒にcommitしてデプロイするのもありだろう。(最近のPaaSは大抵 はrequirements.txtを読み込むのでその必然性は少ないが)
比較記事があちこちにあるので、興味があったら読むといいだろう。英語だけど。
Discussion