コンテンツにスキップ

Web Server Gateway Interface

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

これはこのページの過去の版です。Javaden (会話 | 投稿記録) による 2008年2月17日 (日) 02:30個人設定で未設定ならUTC)時点の版 ((en:Web Server Gateway Interface より翻訳( 2:29, 17 Feb 2008 GMT )))であり、現在の版とは大きく異なる場合があります。

(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

Web Server Gateway Interface は、Pythonプログラミング言語向けの、WebサーバWebアプリケーションないしフレームワークとの間の簡潔で統一されたインタフェースを定義する。

基本的な概念

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

WSGI はWebサーバとWebアプリケーションないしフレームワークとの間の簡潔で統一されたインタフェースを提示するものである。

仕様の概要

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

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

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


アプリケーションの例

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

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

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

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

ラッパー

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

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

また直接アプリケーションをロードできる Apache モジュール mod_wsgi [2]が現在開発中である。

外部リンク