def run(self): try: server_address = ('0.0.0.0', 8000) # Use port 8000 by default. httpd = HTTPServer(server_address, PreviewServer.RequestHandler) except OSError: # If port is not available, server_address = ('0.0.0.0', 0) # use random free port number. httpd = HTTPServer(server_address, PreviewServer.RequestHandler) httpd.site = self.site # Make site object available to the handler self.port = httpd.server_port httpd.serve_forever()