Bottle
Bottle: Python Web Framework より:
- Bottle は高速・シンプル・軽量な Python の WSGI ウェブマイクロフレームワークです。シングルファイルモジュールとして配布されており Python の標準ライブラリ以外には何も依存していません。
目次
機能
- ルーティング:
- リクエストは関数の呼び出しにマッピングされ簡単に動的な URL を使うことができます。
- テンプレート:
- Pythonic な高速テンプレートエンジンが組み込まれており mako, jinja2, cheetah テンプレートをサポートしています。
- ユーティリティ:
- フォームデータ、ファイルのアップロード、cookie、ヘッダーなどの HTTP 関連のメタデータに簡単にアクセスできます。
- サーバー:
- 開発用の HTTP サーバーが組み込まれており paste, fapws3, bjoern, Google App Engine, cherrypy などの WSGI 対応 HTTP サーバーをサポート。
インストール
公式リポジトリから python-bottle (Python 3 用) または python2-bottle (Python 2 用) をインストールしてください。
Hello World
以下は Hello World と表示するサーバーの例です:
from bottle import route, run @route('/:name') def index(name='World'): return 'Hello %s!' % name run(host='localhost', port=8080)
Bottle を起動するときは Python を使います:
python server.py
以下のように表示されます:
Bottle server starting up (using WSGIRefServer())... Listening on http://localhost:8080/ Use Ctrl-C to quit.
FastCGI
(Lighttpd や nginx などから) Bottle を扱うときは FastCGI が便利です。ただし Bottle をフックするものが必要です。python-flup[リンク切れ: package not found] パッケージの FLUP を使用する Hello World アプリケーションの例:
from bottle import route, run, FlupFCGIServer @route('/:name') def index(name='World'): return 'Hello %s!' % name run(host='localhost', port=8080, server=FlupFCGIServer)
詳しくは こちら を読んでください。
リロード
デフォルトでは、Bottle ではファイルのリロードができませんが、新しいサーバーを起動して切り替えることでリロードすることができます:
from bottle import route, run @route('/:name') def index(name='World'): return 'Hello %s!' % name run(host='localhost', port=8080, reloader=True)
リロード間隔を設定するには (デフォルトでは1秒です):
run(host='localhost', port=8080, reloader=True, interval=0.5)
トラブルシューティング
アプリケーションが外部から見れない
Bottle を直接ウェブサーバーとして使用する場合、'localhost' 以外からアクセスできるようにホストする IP アドレスを設定する必要があります:
run(host='192.168.2.3', port=8080)
ファイルを変更しても Bottle が自動的にリロードされない
Bottle はインポートされたファイルを監視してアプリケーションに変更がないか確認しています。リロードしたいアプリケーションモジュールをインポートしてください:
import myapp
上記のコマンドが使えない場合:
@route('/:name') def index(name='World'): import myapp return myapp.init(name)