Hi All I've encountered a weird issue when migrating a web server to Python 3 - the browser would wait forever without showing a page, displaying "Transferring data" in the status bar. I tracked it down to a reference cycle in my BaseHTTPRequestHandler descendant - one of the attributes stored a dict of methods. Removing the cycle made the problem go away.
In Python 2.5.2 the code works fine either way. Here's a minimal example which runs in both 2.5 and 3.0 - to see stuck connections run as-is in 3.0 and navigate to http://localhost:8123; to fix this comment out "self.dummy = self" (alternatively reset self.dummy = None at the end of the __init__ method). Am I doing it wrong, or is this a bug? try: import http.server httpmodule = http.server except: import BaseHTTPServer httpmodule = BaseHTTPServer class BreakageRequest(httpmodule.BaseHTTPRequestHandler): def __init__(self, request, client_address, server): self.dummy = self # COMMENT THIS OUT to see the connection become unstuck httpmodule.BaseHTTPRequestHandler.__init__(self, request, client_address, server) def do_GET(self): self.send_response(200) self.send_header("Content-Type", "application/xml") self.end_headers() self.wfile.write("<is_it_stuck/>".encode('utf-8')) srv = httpmodule.HTTPServer(('', 8123), BreakageRequest) srv.serve_forever() -- http://mail.python.org/mailman/listinfo/python-list