summaryrefslogtreecommitdiffstats
path: root/openstack
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-11-29 17:01:46 +0000
committerGerrit Code Review <review@openstack.org>2012-11-29 17:01:46 +0000
commitcd176d1147b19547fe4deb3299216aeaa1ca535b (patch)
treed1063641ee270e7546e62849fcec29c6ecb3465c /openstack
parent57fd94b00727d38afbc55ebac568238803d4a693 (diff)
parent83186053c16d7536f90b4e6b3f95bd16d26bfb8c (diff)
downloadoslo-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.py4
-rw-r--r--openstack/common/wsgi.py24
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))