WSGIは、PEP 333(およびPython 3ではPEP3333)、a.k.a Web Server Gateway Interfaceです。 3つの部分から構成されていますが、興味のある部分はWSGIアプリケーションの記述方法です。そしてWSGI appは、2つの引数をとり、反復可能なオブジェクトを返す(またはジェネレータである)呼び出し可能なオブジェクトです。
# this is my_app module
def app(environ, start_response):
# environ is dict-like object containing the WSGI environment
# refer to the PEP for details
# start_response is a callable that, well, starts the response
headers = [('Content-Type', 'text/plain; charset=utf-8')]
start_response('200 OK', headers)
return ["I'm a WSGI application.\n"]
アプリケーションを実行するには、ゲートウェイであるWSGIの別の部分が必要です。標準ライブラリにはwsgiref
パッケージがあります。これは、CGIゲートウェイが含まれています
#!/usr/bin/python
# this is a CGI script that runs a WSGI application inside CGI handler
from wsgiref.handlers import CGIHandler
from my_app import app
CGIHandler().run(app)
そしてまた、開発のための簡単なHTTPサーバ:
from wsgiref.simple_server import make_server
from my_app import app
httpd = make_server('localhost', 8000, app)
httpd.serve_forever()
あなたが見ることができるように、WSGIはあなたが異なる環境でアプリケーションを再利用することができます - CGI、SCGI、FastCGIの、mod_wsgi、mod_pythonなどのように、実際に書き直す必要はありません。
WSGIの最後の部分はミドルウェアです。基本的には、さまざまなWSGIアプリケーションを組み合わせることができます。これは、サンドウィッチの一種を形成します。要求はトップ(ゲートウェイ)からボトム(通常はあなたのアプリケーション)に流れ、その間にいくつかの中間層があり、データベース接続プーリングやセッションのようなものを実装します。 wsgiref
には、そのようなミドルウェアの1つ - wsgiref.validate.validator
が含まれています。このミドルウェアは、WSGI仕様の規則に準拠しているかどうかを確認します。
それは基本的にそれです。今、フレームワークを使いましょう。
私はちょうど[Armin Ronacherのこのガイド](http://lucumr.pocoo.org/2007/5/21/getting-started-with-wsgi/)を見つけましたが、これは私が探していたものです。他の人にもおすすめです。この質問をすることはできません、私は思う、そうするように要求する他の人。 – ShankarG