• o11c
    link
    fedilink
    English
    arrow-up
    5
    ·
    edit-2
    1 year ago

    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)

    • JimOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      I was just about to uninstall nginx…

      On a serious note: I’m not sure of the details of socketserver but I would think opening a socket would not be a cpu intensive process.

      • o11c
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        1
        ·
        1 year ago

        The comments in the code explain exactly what the problem is and how to fix it, and it would take less than 30 minutes to implement and test that (assuming you don’t just grab someone else’s version - there’s a reason I know the time), but nobody has committed it in … at least 13 years since the comment was written; I’m not digging any further through imported SVN history.