It's worth noting that the http.server
module is based on socketserver.BaseServer.serve_forever
, which is a atrocious.
It uses a busy loop with a delay, so it both burns CPU and is unresponsive.
(The fact that Python has had broken signal handling since 3.5 also hurts - EINTR should never be ignored from blocking calls)