チュートリアル¶
インストール¶
このチュートリアルでは、Python3.6を使用します。
$ python --version
Python 3.6.0b4
$ pip install -U pip
$ pip install kobin wsgicli
- Kobin: WSGI Framework
- WSGICLI: Command line tools for developing your WSGI Application
初めてのKobinアプリケーション¶
ここからは、実際にKobinのアプリケーションをつくってみます。 main.py
を作成してください。
from kobin import Kobin, Response, JSONResponse
app = Kobin()
@app.route('/')
def index() -> Response:
return Response("Hello World!")
@app.route('/users/{user_id}')
def say_hello(user_id: int) -> JSONResponse:
return JSONResponse({
"message": f"Hello user{user_id}!"
})
BottleやFlaskなどのWSGIフレームワークを使用したことのある方にとっては、馴染みのあるものかもしれません。一つ特徴的なのは、型ヒントの存在でしょうか。Kobinでは、引数の型ヒントを元にURL変数をキャストし、View関数に渡します。
それでは実際に動かしてみましょう。WSGIのアプリケーションを動かす方法はいくつかありますが、開発環境では wsgicli
というコマンドラインツールを推奨しています。
$ wsgicli run main.py app
Start: 127.0.0.1:8000
サーバが無事に起動したら、実際にアクセスしてみましょう。
何かメッセージが表示されましたか?おめでとうございます。
本番環境へのデプロイ¶
本番環境では、パフォーマンスの観点からこれまで使用してきた wsgicli
ではなく gunicorn
を使いましょう。
$ pip install gunicorn
$ gunicorn main:app
それではアクセスしてみてください。大変です、表示がおかしくなってしまいました。実は、gunicornにはCSSやJS、画像ファイルといった静的コンテンツを配信する機能はありません。本番環境では、Nginx等のリバースプロキシを用いて静的コンテンツを配信することが一般的です(参考: Serving Static Content - Nginx )
もし、HerokuなどどうしてもPythonのアプリケーション側で静的ファイルを配信する必要がある場合は、kobinpy/wsgi-static-middleware を利用してください。