仕様の概要

Python

カテゴリー: インタフェース定義  閲覧数: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.サーバ側は、クライアントへのレスポンスを生成
・サーバ側は、これらを用いてクライアントへのレスポンスを生成する