From: Tomas Sedovic Date: Mon, 3 Sep 2012 14:59:57 +0000 (+0200) Subject: Fix support for eventlet 0.9.16 X-Git-Tag: 2014.1~1487 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=1c485f9ae130fc37e993deafb0ad8fe1935d1cba;p=openstack-build%2Fheat-build.git Fix support for eventlet 0.9.16 The changes in c7059ae54ef2712e7599a6de30a631d3a0bb6bd2 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 --- diff --git a/heat/common/wsgi.py b/heat/common/wsgi.py index 32b5bbca..0a566188 100644 --- a/heat/common/wsgi.py +++ b/heat/common/wsgi.py @@ -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