カテゴリー:
インタフェース定義
閲覧数:212 配信日:2018-08-25 10:48
WSGIには二つの側 — サーバ側とアプリケーション側が存在する
WSGIは、リクエスト情報・レスポンスヘッダ・レスポンス本文を、両者の間でどのようにやりとりするかをPythonのAPIとして定義している
WSGIサーバ(WSGIアプリケーションコンテナ)
WSGIアプリケーションを常駐させる
・HTTPクライアントからリクエストを受け取るごとに、WSGIアプリケーションのcallableオブジェクトを呼び出す
→ クライアントからのリクエストがアプリケーションへ転送される
WSGIアプリケーション
callableオブジェクト (__call__が定義されたオブジェクト) として定義する
処理の流れ
1.Webサーバ側が、クライアントからリクエストを受け取る
2.サーバ側は、callableオブジェクトを呼び出して、その引数として環境変数と1つのコールバック用callableオブジェクトを渡す
・Webサーバ側は、アプリケーション側がエントリポイントとして提供するcallableオブジェクト(関数やクラスインスタンスなど __call__ が定義されたオブジェクト)を呼び出して、その引数として環境変数と1つのコールバック用callableオブジェクトを渡す
3.アプリケーション側は、本文を生成するiterableオブジェクトを戻り値として返す
・アプリケーション側は、このコールバック用callableオブジェクトを呼び出すことでステータスコードとレスポンスヘッダをサーバ側に伝え、さらに本文を生成するiterableオブジェクト(イテレータやリストなど)を戻り値として返す
4.サーバ側は、クライアントへのレスポンスを生成
・サーバ側は、これらを用いてクライアントへのレスポンスを生成する