👏

Python(3) webフレームワーク flask概ね互換で最軽量級 bottlepy

2 min read

ネット上では概ねdjango/flaskで二分されてるようだ。

しかしそれ以外にももちろん存在する。その中でも最軽量級と思われるのがこれだ。

Bottle: Python Web Framework — Bottle 0.13-dev documentation

他所様にいいサンプルソースがあったので 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倍程度の速度はでるらしい。
他のメリットは、ファイル数が少ないことによる取り回しの簡便さ。

bottlepy/bottle: bottle.py is a fast and simple micro-framework for python web-applications.

リポジトリに lib とか src とかのディレクトリがないことから一目瞭然である。
いや別にflaskのファイルが多いのが駄目とは言わない。でもbottleで済む実装なら、bottle使ったほうがサーバ設置も楽であろう。

例えば開発ソースと一緒にcommitしてデプロイするのもありだろう。(最近のPaaSは大抵 はrequirements.txtを読み込むのでその必然性は少ないが)

比較記事があちこちにあるので、興味があったら読むといいだろう。英語だけど。

Compare Flask vs Bottle | CodeAhoy

Flask vs Bottle detailed comparison as of 2020 - Slant

Discussion

ログインするとコメントできます