Allow for overriding the protocol object
This commit is contained in:
@@ -101,6 +101,7 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler):
|
|||||||
return
|
return
|
||||||
|
|
||||||
self.environ = self.get_environ()
|
self.environ = self.get_environ()
|
||||||
|
self.application = self.server.app
|
||||||
try:
|
try:
|
||||||
self.handle_one_response()
|
self.handle_one_response()
|
||||||
except socket.error, e:
|
except socket.error, e:
|
||||||
@@ -168,7 +169,7 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler):
|
|||||||
return write
|
return write
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = self.server.app(self.environ, start_response)
|
result = self.application(self.environ, start_response)
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
exc = ''.join(traceback.format_exception(*sys.exc_info()))
|
exc = ''.join(traceback.format_exception(*sys.exc_info()))
|
||||||
print exc
|
print exc
|
||||||
@@ -275,7 +276,7 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler):
|
|||||||
|
|
||||||
|
|
||||||
class Server(BaseHTTPServer.HTTPServer):
|
class Server(BaseHTTPServer.HTTPServer):
|
||||||
def __init__(self, socket, address, app, log, environ=None, max_http_version=None):
|
def __init__(self, socket, address, app, log=None, environ=None, max_http_version=None, protocol=HttpProtocol):
|
||||||
self.socket = socket
|
self.socket = socket
|
||||||
self.address = address
|
self.address = address
|
||||||
if log:
|
if log:
|
||||||
@@ -285,6 +286,7 @@ class Server(BaseHTTPServer.HTTPServer):
|
|||||||
self.app = app
|
self.app = app
|
||||||
self.environ = environ
|
self.environ = environ
|
||||||
self.max_http_version = max_http_version
|
self.max_http_version = max_http_version
|
||||||
|
self.protocol = protocol
|
||||||
|
|
||||||
def get_environ(self):
|
def get_environ(self):
|
||||||
socket = self.socket
|
socket = self.socket
|
||||||
@@ -301,7 +303,7 @@ class Server(BaseHTTPServer.HTTPServer):
|
|||||||
return d
|
return d
|
||||||
|
|
||||||
def process_request(self, (socket, address)):
|
def process_request(self, (socket, address)):
|
||||||
proto = HttpProtocol(socket, address, self)
|
proto = self.protocol(socket, address, self)
|
||||||
proto.handle()
|
proto.handle()
|
||||||
|
|
||||||
def log_message(self, message):
|
def log_message(self, message):
|
||||||
@@ -309,8 +311,8 @@ class Server(BaseHTTPServer.HTTPServer):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
def server(sock, site, log=None, environ=None, max_size=None, max_http_version=DEFAULT_MAX_HTTP_VERSION):
|
def server(sock, site, log=None, environ=None, max_size=None, max_http_version=DEFAULT_MAX_HTTP_VERSION, protocol=HttpProtocol):
|
||||||
serv = Server(sock, sock.getsockname(), site, log, environ=None, max_http_version=max_http_version)
|
serv = Server(sock, sock.getsockname(), site, log, environ=None, max_http_version=max_http_version, protocol=protocol)
|
||||||
if max_size is None:
|
if max_size is None:
|
||||||
max_size = DEFAULT_MAX_SIMULTANEOUS_REQUESTS
|
max_size = DEFAULT_MAX_SIMULTANEOUS_REQUESTS
|
||||||
pool = coros.CoroutinePool(max_size=max_size)
|
pool = coros.CoroutinePool(max_size=max_size)
|
||||||
|
Reference in New Issue
Block a user