From 61fabaa559c49a1534ee01075dc60a2e39aaf3e2 Mon Sep 17 00:00:00 2001 From: Ryan Williams Date: Sun, 29 Nov 2009 11:26:09 -0500 Subject: [PATCH] Patcher-ized BaseHTTPServer --- eventlet/green/BaseHTTPServer.py | 53 ++++---------------------------- 1 file changed, 6 insertions(+), 47 deletions(-) diff --git a/eventlet/green/BaseHTTPServer.py b/eventlet/green/BaseHTTPServer.py index d11548a..d582087 100644 --- a/eventlet/green/BaseHTTPServer.py +++ b/eventlet/green/BaseHTTPServer.py @@ -1,54 +1,13 @@ -import sys +from eventlet import patcher from eventlet.green import socket from eventlet.green import SocketServer -__import_lst = ['DEFAULT_ERROR_MESSAGE', '_quote_html', '__version__', '__all__', 'BaseHTTPRequestHandler'] -__BaseHTTPServer = __import__('BaseHTTPServer') -for var in __import_lst: - exec "%s = __BaseHTTPServer.%s" % (var, var) - - -class HTTPServer(SocketServer.TCPServer): - - allow_reuse_address = 1 # Seems to make sense in testing environment - - def server_bind(self): - """Override server_bind to store the server name.""" - SocketServer.TCPServer.server_bind(self) - host, port = self.socket.getsockname()[:2] - self.server_name = socket.getfqdn(host) - self.server_port = port - - -class BaseHTTPRequestHandler(BaseHTTPRequestHandler): - - def address_string(self): - host, port = self.client_address[:2] - return socket.getfqdn(host) - - -def test(HandlerClass = BaseHTTPRequestHandler, - ServerClass = HTTPServer, protocol="HTTP/1.0"): - """Test the HTTP request handler class. - - This runs an HTTP server on port 8000 (or the first command line - argument). - - """ - - if sys.argv[1:]: - port = int(sys.argv[1]) - else: - port = 8000 - server_address = ('', port) - - HandlerClass.protocol_version = protocol - httpd = ServerClass(server_address, HandlerClass) - - sa = httpd.socket.getsockname() - print "Serving HTTP on", sa[0], "port", sa[1], "..." - httpd.serve_forever() +patcher.inject('BaseHTTPServer', + globals(), + ('socket', socket), + ('SocketServer', SocketServer)) +del patcher if __name__ == '__main__': test()