PythonのWSGI
WSGIとはPEP333で定義されており、サーバとWebアプリケーションをつなぐ共通のインターフェースとなっています。
これはPythonにはDjango、Flaskなど様々なWebフレームワークがありますが、過去にフレームワークごとに利用可能なサーバが制限されてしまったりしていたためサーバとアプリケーションの間に共通のインターフェースを作成するということで定義されました。
WSGIに則り作成されたWebアプリケーション(WSGIアプリケーション)はWSGIに則り作成されたサーバ(WSGIサーバ)上で動作します。
代表的なWSGIアプリケーションはDjango、Flaskなどがあります。WSGIサーバにはgunicornなどがあります。
WSGIアプリケーションのシンプルなコード、仕様は以下のようになっています。
def application(environ, start_response):
start_response('200 OK', [('Content-type', 'text/plain; charset=utf-8')])
return [b'Hello World']
- environ:HTTPリクエストの情報(ヘッダーなど)
- start_response:主にHTTPレスポンスのヘッダー情報を作成する関数。HTTPレスポンスのコード、返すヘッダーを渡します。
- returnの値としてレスポンスボディをバイトで返す。
一般的なWebフレームワークはこれに加えて、ルーティングやリクエストごとにレスポンス作成する機能、セッション管理など様々なものが追加されています。