今年の中頃からぼちぼち python の勉強を始めています。普段は Jupyter Notebook でデータ処理等のスクリプトとかを書いて練習しています。
今日は気分を変えてミニマムな web サーバーってどうやって書くか調べてみました。
公式リファレンスだと https://docs.python.org/ja/3/library/http.server.html あたりなのですが、do_GET() あたりの書き方がわからなくて、おもったより時間がかかりました。(1時間くらい) web には未だ python2.x の情報が溢れているし、python3.x でもバージョンによって思ったより差異があって調べにくかったです。
Hello とだけ返す web サーバ (python3.7)
#!/usr/bin/env python3.7 from http.server import BaseHTTPRequestHandler, HTTPServer class MyHTTPRequestHandler(BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.send_header('Content-type', 'text/plain') self.end_headers() self.wfile.write(bytearray('Hello', 'utf-8')) my_httpserver = HTTPServer(('', 8080), MyHTTPRequestHandler) try: my_httpserver.serve_forever() except KeyboardInterrupt: pass # ちゃんと閉じないとしばらくアドレスが開放されないので明示的に閉じる my_httpserver.server_close()