Fix support for eventlet 0.9.16

The changes in c7059ae54e were not enough
to provide compatibility with 0.9.16 and 0.9.17.ith 0.9.16 and 0.9.17.

Change-Id: Id1ddc988443e162f1c835505b619b7b45e86578d
Signed-off-by: Tomas Sedovic <tomas@sedovic.cz>
This commit is contained in:
Tomas Sedovic 2012-09-03 16:59:57 +02:00
parent 1ce586c96c
commit 1c485f9ae1
1 changed files with 16 additions and 3 deletions

View File

@ -242,9 +242,9 @@ class Server(object):
eventlet.patcher.monkey_patch(all=False, socket=True)
self.pool = eventlet.GreenPool(size=self.threads)
try:
eventlet.wsgi.server(self.sock, self.application,
url_length_limit=URL_LENGTH_LIMIT,
eventlet_wsgi_server(self.sock, self.application,
custom_pool=self.pool,
url_length_limit=URL_LENGTH_LIMIT,
log=WritableLogger(self.logger))
except socket.error, err:
if err[0] != errno.EINVAL:
@ -254,12 +254,25 @@ class Server(object):
def _single_run(self, application, sock):
"""Start a WSGI server in a new green thread."""
self.logger.info(_("Starting single process server"))
eventlet.wsgi.server(sock, application,
eventlet_wsgi_server(sock, application,
custom_pool=self.pool,
url_length_limit=URL_LENGTH_LIMIT,
log=WritableLogger(self.logger))
def eventlet_wsgi_server(sock, application, **kwargs):
'''
Return a new instance of the eventlet wsgi server with the proper url limit
in a way that's compatible with eventlet 0.9.16 and 0.9.17.
'''
try:
return eventlet.wsgi.server(sock, application, **kwargs)
# TODO(shadower) remove this when we don't support eventlet 0.9.16 anymore
except TypeError:
kwargs.pop('url_length_limit', None)
return eventlet.wsgi.server(sock, application, **kwargs)
class Middleware(object):
"""
Base WSGI middleware wrapper. These classes require an application to be