@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Python3: http.server のみでデバッグ用の HTTP サーバを作る

http.server のみというか、標準添付モジュールだけで動くやつ。GET/POST リクエストの内容を dump する(呼び出し元にも echo する)。

gist.github.com

本当にただ HTTP サーバを立てたいだけなら python3 -m http.server で事足りるが、これだとリクエストの中身を覗けないのでハンドラを自前で書く必要がある。

http.server のドキュメントだけでは実装しきれない気がする。do_XXX() をオーバーライドするだけでなく send_response()end_headers() を呼び出さないといけない、とか。

Ctrl-C で停止しても数秒くらい OSError: [Errno 48] Address already in use が出て再起動できなくなるのが玉に瑕。lsof てみてもプロセスはいなかったりして、うまく対処できない。

2021/10/13 追記: コメント欄で allow_reuse_address を True にすれば解決すると教えてもらいました。