このモジュールは WSGI アプリケーションを提供する
シンプルな HTTP サーバです(BaseHTTPServer がベースです)。
個々のサーバインスタンスは単一の WSGI アプリケーションを、特定のホストとポート上で
提供します。もし一つのホストとポート上で複数のアプリケーションを提供したいならば、
PATH_INFO をパースして個々のリクエストでどのアプリケーションを呼び出すか
選択するような WSGI アプリケーションを作るべきです。(例えば、 wsgiref.util から
shift_path_info() を利用します。)
| host, port, app [, server_class=WSGIServer [, handler_class=WSGIRequestHandler]]) |
使用例:
from wsgiref.simple_server import make_server, demo_app
httpd = make_server('', 8000, demo_app)
print "Serving HTTP on port 8000..."
# プロセスが死ぬまでリクエストに答える
httpd.serve_forever()
# 代替:1つのリクエストを受けて終了する
##httpd.handle_request()
| environ, start_response) |
| server_address, RequestHandlerClass) |
(host,port) のタプル、そして RequesthandlerClass は
リクエストの処理に使われる BaseHTTPServer.BaseHTTPRequestHandler の
サブクラスでなければいけません。
make_server が細かい調整をやってくれるので、 通常はこのコンストラクタを呼ぶ必要はありません。
WSGIServer は BaseHTTPServer.HTTPServer のサブクラスですので、 この全てのメソッド(serve_forever() や handle_request() のような)が 利用できます。 WSGIServer も以下のような WSGI 固有メソッドを提供します:
| application) |
| ) |
しかしながら、通常はこれらの追加されたメソッドを使う必要はありません。 set_app() は普通は make_server() によって呼ばれ、 get_app() は主にリクエストハンドラインスタンスの便宜上存在する からです。
| request, client_address, server) |
host,port) のタプル)、
server(WSGIServer インスタンス)の HTTP ハンドラを作成します。
このクラスのインスタンスを直接生成する必要はありません;これらは 必要に応じて WSGIServer オブジェクトによって自動的に生成されます。 しかしながら、このクラスをサブクラス化し、make_server() 関数に handler_class として与えることは可能でしょう。サブクラスにおいて オーバーライドする意味のありそうなものは:
| ) |
| ) |
wsgi.errors ストリームとして使われるオブジェクトを返します。
デフォルト実装では単に sys.stderr を返します。
| ) |