CGIHTTPServerライブラリもといhttp.serverライブラリ

PythonにはローカルでCGIをデバッグするためのライブラリが用意されています。 Python2ではCGIHTTPServerというライブラリがそれでしたが、Python3ではライブラリが整理され、 httpパッケージに収められたhttp.serverというライブラリでCGIのテストが行えます。 コードは以下のようになります


                import http.server
                http.server.test(HandlerClass=http.server.CGIHTTPRequestHandler)
            

CGIそのものは別途用意し、任意のディレクトリへと置きます。 http.serverを利用するときのディレクトリ配置の例を以下に載せます

cgi_testはひとまずテスト環境を収めるフォルダです。 test.py(上記のhttp.serverを使用するコードを収めたファイル)と同じ階層に、 別途作成したCGIを収めるcgi-binというフォルダを用意しています。test.pyを実行すると、 localhostの8000番ポート(http://localhost:8000)にアクセスすることでtest.pyと同じ階層にあるindex.htmlが表示されます。 test.pyを実行した際に表示されるプロンプトにはログが出力されます。 ちなみに、この際CGIの拡張子は.pyのままで大丈夫です

たとえば、以下の様なプログラムcgi.pyがcgi-binに配置されている場合、

            #!/foo/bar/hoge/python3.4
            # coding: utf-8
            
            print('Content-type: text/html; charset=UTF-8\r\n')
            print("HelloWorld!")
            
これを実行するにはhttp://localhost:8000/cgi-bin/cgi.pyにアクセスすることで実行させることが出来ます。