単純なHTTPWebサーバーの場合、WSGIリファレンス実装から始めることができます。
wsgirefは、WSGIサポートをWebサーバーまたはフレームワークに追加するために使用できるWSGI仕様のリファレンス実装です。WSGI環境変数と応答ヘッダーを操作するためのユーティリティ、WSGIサーバーを実装するための基本クラス、WSGIアプリケーションにサービスを提供するデモHTTPサーバーなどを提供します。
サンプルサーバーを変更してHTTP_HOST
ヘッダーを確認します。これは、仮想ホストに応じて、異なるテキストで応答する単純なアプリです。(構成ファイルを使用するように例を拡張することは、演習として残されています)。
import wsgiref
from wsgiref.simple_server import make_server
def my_app(environ,start_response):
from io import StringIO
stdout = StringIO()
host = environ["HTTP_HOST"].split(":")[0]
if host == "127.0.0.1":
print("This is virtual host 1", file=stdout)
elif host == "localhost":
print("This is virtual host 2", file=stdout)
else:
print("Unknown virtual host", file=stdout)
print("Hello world!", file=stdout)
print(file=stdout)
start_response(b"200 OK", [(b'Content-Type',b'text/plain; charset=utf-8')])
return [stdout.getvalue().encode("utf-8")]
def test1():
httpd = make_server('', 8000, my_app)
print("Serving HTTP on port 8000...")
# Respond to requests until process is killed
httpd.serve_forever()