コンテンツにスキップ

Web Server Gateway Interface

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

これはこのページの過去の版です。Penn Station (会話 | 投稿記録) による 2010年12月3日 (金) 13:56個人設定で未設定ならUTC)時点の版 (link fix - equal to linktext)であり、現在の版とは大きく異なる場合があります。

Web Server Gateway Interface (WSGI) は、プログラミング言語Pythonのための、Webアプリケーション(もしくは、フレームワーク)とWebサーバ間の簡潔かつ統一されたインタフェースを定義する。

基本的な概念

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

WSGIは、Webサーバと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の影響を受けた同様のインターフェイスが存在する。以下はその一例である。

外部リンク