diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-11-29 17:01:46 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-11-29 17:01:46 +0000 |
| commit | cd176d1147b19547fe4deb3299216aeaa1ca535b (patch) | |
| tree | d1063641ee270e7546e62849fcec29c6ecb3465c /openstack | |
| parent | 57fd94b00727d38afbc55ebac568238803d4a693 (diff) | |
| parent | 83186053c16d7536f90b4e6b3f95bd16d26bfb8c (diff) | |
| download | oslo-cd176d1147b19547fe4deb3299216aeaa1ca535b.tar.gz oslo-cd176d1147b19547fe4deb3299216aeaa1ca535b.tar.xz oslo-cd176d1147b19547fe4deb3299216aeaa1ca535b.zip | |
Merge "Use Service thread group for WSGI request handling"
Diffstat (limited to 'openstack')
| -rw-r--r-- | openstack/common/service.py | 4 | ||||
| -rw-r--r-- | openstack/common/wsgi.py | 24 |
2 files changed, 14 insertions, 14 deletions
diff --git a/openstack/common/service.py b/openstack/common/service.py index 3186d56..0df0dec 100644 --- a/openstack/common/service.py +++ b/openstack/common/service.py @@ -302,8 +302,8 @@ class ProcessLauncher(object): class Service(object): """Service object for binaries running on hosts.""" - def __init__(self): - self.tg = threadgroup.ThreadGroup('service') + def __init__(self, threads=1000): + self.tg = threadgroup.ThreadGroup('service', threads) def start(self): pass diff --git a/openstack/common/wsgi.py b/openstack/common/wsgi.py index aaeb07b..dc49931 100644 --- a/openstack/common/wsgi.py +++ b/openstack/common/wsgi.py @@ -56,8 +56,7 @@ class Service(service.Service): """ def __init__(self, threads=1000): - super(Service, self).__init__() - self.pool = eventlet.GreenPool(threads) + super(Service, self).__init__(threads) def start(self, application, port, host='0.0.0.0', backlog=128): """Start serving this service using the provided server instance. @@ -67,7 +66,16 @@ class Service(service.Service): """ super(Service, self).start() socket = eventlet.listen((host, port), backlog=backlog) - self.pool.spawn_n(self._run, application, socket) + (self._host, self._port) = socket.getsockname() + self.tg.add_thread(self._run, application, socket) + + @property + def host(self): + return self._host + + @property + def port(self): + return self._port def stop(self): """Stop serving this API. @@ -77,18 +85,10 @@ class Service(service.Service): """ super(Service, self).stop() - def wait(self): - """Wait until all servers have completed running.""" - super(Service, self).wait() - try: - self.pool.waitall() - except KeyboardInterrupt: - pass - def _run(self, application, socket): """Start a WSGI server in a new green thread.""" logger = logging.getLogger('eventlet.wsgi.server') - eventlet.wsgi.server(socket, application, custom_pool=self.pool, + eventlet.wsgi.server(socket, application, custom_pool=self.tg.pool, log=logging.WritableLogger(logger)) |
