シンプルな動作(ページを表示するだけなど)ですと、
お手軽な手法と言えますが、クライアントから送られてきた情報を受け取り
データのやり取り考えるとこの手法で作ってみると、
バージョンにもよると思いますが、思うようにパラメータが受け取れない
現象が発生することとなります。
そこで、HTTPServer を利用しつつも、handler_class を作ることで、
GET や POST の動作を指定できる方法で構成してみます。
まず、Webサーバーの定義
import os
import sys
import http.server as s
import json
import logging
PORT = 8080
#--------------------------------------------------------------------------
# サーバ起動
#--------------------------------------------------------------------------
def run(server_class=s.HTTPServer, handler_class=MyHandler, port=PORT):
logging.basicConfig(level=logging.INFO)
server_address = ("", port) # ("192.168.0.5", port) IPを指定した場合、IP外からアクセスが不能
httpd = server_class(server_address, handler_class)
logging.info("Starting httpd...\n")
try:
print("Starting server, use to stop")
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
logging.info("Stopping httpd...\n")
if (__name__ == "__main__"):
os.chdir(os.path.join(os.path.dirname(__file__), 'contents')) # カレントフォルダ設定
if (len(sys.argv) == 2):
run(port=int(sys.argv[1]))
else:
run()
起動時のパラメータとして、ポート番号が指定された場合、その番号で
起動するようにしています。(実行時に指定できるので便利ですね~)
GET や POST で受け取ったイベントの定義は、また次回...
0 件のコメント:
コメントを投稿