コンテンツにスキップ

Web Server Gateway Interface

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。220.108.140.171 (会話) による 2011年9月10日 (土) 23:37個人設定で未設定ならUTC)時点の版であり、現在の版とは大きく異なる場合があります。

Web Server Gateway Interface (WSGI; ウイスキー) は、WebアプリケーションWebサーバを接続するための、簡潔かつ統一されたインタフェース定義であり、プログラミング言語Pythonで使われる。

基本的な概念

Python には多様な Webアプリケーションフレームワーク が存在するが、このことは、新しい Python ユーザーにとって問題になることがある。Webフレームワークを選択することによって、使用できるWebサーバが制限されてしまったり、その逆の制限があったりするためである。

この問題を解決するために、WSGIは、WebアプリケーションとWebサーバの間の簡潔かつ統一されたインタフェースを定める。これにより、WSGIに対応させたWebアプリケーションは、WSGIに対応した任意のWebサーバ上で実行することができる。

WSGIは既存のCGI標準に基づいて設計されている。

仕様の概要

WSGI のインターフェイスには二つの側面がある。"サーバ"ないし"ゲートウェイ"側と、"アプリケーション"ないし"フレームワーク"側である。サーバー側はアプリケーション側によって提供される呼び出し可能なオブジェクト(通常は関数メソッド)を呼び出す。さらに WSGI は ミドルウェア の考え方を提供する。WSGI サーバーと WSGI アプリケーションの "中間に"挿入できるよう、WSGIミドルウェアは両方の側の API を実装する。ミドルウェアはサーバーの視点からはアプリケーションとして動作し、アプリケーションの視点からはサーバーとして動作する。

"ミドルウェア"コンポーネントは以下のような機能を実行する:

  • 目標の URL にもとづき、環境変数を適宜変更し、リクエストを別のアプリケーションのオブジェクトに回送する
  • 複数のアプリケーションやフレームワークが同じプロセスの中で同居しながら動作できるようにする
  • リクエストとレスポンスをネットワーク上で転送することによる負荷分散と遠隔処理
  • XSLスタイルシートの適用などの、コンテンツの後処理の実行

アプリケーションの例

WSGI互換の"Hello World" アプリケーション:

def app(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    yield 'Hello World\n'

WSGI 互換のアプリケーションおよびフレームワーク

WSGIをサポートするWebアプリケーションフレームワークは多数存在する:

ラッパー

サーバーやゲートウェイは、HTTPのクライアントから受ける、アプリケーションに対する各リクエスト毎にアプリケーションを呼び出す。

現在、FastCGI, CGI, SCGI, Apache (mod_wsgi), AJP (flup を使用), mod_python, Microsoft IIS (ASP ゲートウェイを使用)に対してラッパーが利用可能である。

他言語

WSGIの影響を受けて、他のプログラミング言語にも同様のインターフェイスが作られた。以下はその一例である。

外部リンク