Issue 24292: wsgiref.simple_server.WSGIRequestHandler doesn't log request timeouts (original) (raw)

http.BaseHTTPRequestHandler logs request timeouts. In handle_one_request():

    except socket.timeout as e:
        #a read or a write timed out.  Discard this connection
        self.log_error("Request timed out: %r", e)
        self.close_connection = 1
        return

Unfortunately, wsgiref.simple_server.WSGIRequestHandler, which overrides BaseHTTPRequestHandler's handle() method, does not catch and log request timeouts. Fixing this is a simple matter of wrapping the entire body of its handle() function in a try with this except clause:

except socket.timeout as e: self.log_error("Request timed out: %r", e) raise