Store socket_info as a dictionary rather than an array
This commit is contained in:
@@ -248,11 +248,9 @@ class WsgiService(object):
|
||||
def wait(self):
|
||||
self.wsgi_app.wait()
|
||||
|
||||
def get_port(self, api):
|
||||
for i in xrange(len(self.apis)):
|
||||
if self.apis[i] == api:
|
||||
return self.wsgi_app.ports[i]
|
||||
return None
|
||||
def get_socket_info(self, api_name):
|
||||
"""Returns the (host, port) that an API was started on."""
|
||||
return self.wsgi_app.socket_info[api_name]
|
||||
|
||||
|
||||
class ApiService(WsgiService):
|
||||
@@ -331,8 +329,10 @@ def _run_wsgi(paste_config_file, apis):
|
||||
logging.debug(_("App Config: %(api)s\n%(config)r") % locals())
|
||||
logging.info(_("Running %s API"), api)
|
||||
app = wsgi.load_paste_app(paste_config_file, api)
|
||||
apps.append((app, getattr(FLAGS, "%s_listen_port" % api),
|
||||
getattr(FLAGS, "%s_listen" % api)))
|
||||
apps.append((app,
|
||||
getattr(FLAGS, "%s_listen_port" % api),
|
||||
getattr(FLAGS, "%s_listen" % api),
|
||||
api))
|
||||
if len(apps) == 0:
|
||||
logging.error(_("No known API applications configured in %s."),
|
||||
paste_config_file)
|
||||
|
||||
@@ -61,15 +61,16 @@ class Server(object):
|
||||
|
||||
def __init__(self, threads=1000):
|
||||
self.pool = eventlet.GreenPool(threads)
|
||||
self.ports = []
|
||||
self.socket_info = {}
|
||||
|
||||
def start(self, application, port, host='0.0.0.0', backlog=128):
|
||||
def start(self, application, port, host='0.0.0.0', key=None, backlog=128):
|
||||
"""Run a WSGI server with the given application."""
|
||||
arg0 = sys.argv[0]
|
||||
logging.audit(_("Starting %(arg0)s on %(host)s:%(port)s") % locals())
|
||||
socket = eventlet.listen((host, port), backlog=backlog)
|
||||
self.pool.spawn_n(self._run, application, socket)
|
||||
self.ports.append(socket.getsockname())
|
||||
if key:
|
||||
self.socket_info[key] = socket.getsockname()
|
||||
|
||||
def wait(self):
|
||||
"""Wait until all servers have completed running."""
|
||||
|
||||
Reference in New Issue
Block a user