Browse Source

Merge "Re-use existing ProcessLauncher from wsgi in RPC workers" into stable/queens

changes/09/709409/2
Zuul 4 months ago
committed by Gerrit Code Review
parent
commit
4a6f39b97c
3 changed files with 18 additions and 7 deletions
  1. +1
    -1
      neutron/server/wsgi_eventlet.py
  2. +11
    -6
      neutron/service.py
  3. +6
    -0
      neutron/wsgi.py

+ 1
- 1
neutron/server/wsgi_eventlet.py View File

@@ -27,7 +27,7 @@ def eventlet_wsgi_server():

def start_api_and_rpc_workers(neutron_api):
try:
worker_launcher = service.start_all_workers()
worker_launcher = service.start_all_workers(neutron_api)

pool = eventlet.GreenPool()
api_thread = pool.spawn(neutron_api.wait)


+ 11
- 6
neutron/service.py View File

@@ -217,7 +217,7 @@ class AllServicesNeutronWorker(neutron_worker.BaseWorker):
self._launcher.restart()


def _start_workers(workers):
def _start_workers(workers, neutron_api=None):
process_workers = [
plugin_worker for plugin_worker in workers
if plugin_worker.worker_process_count > 0
@@ -225,9 +225,14 @@ def _start_workers(workers):

try:
if process_workers:
worker_launcher = common_service.ProcessLauncher(
cfg.CONF, wait_interval=1.0
)
# Get eventual already existing instance from WSGI app
worker_launcher = None
if neutron_api:
worker_launcher = neutron_api.wsgi_app.process_launcher
if worker_launcher is None:
worker_launcher = common_service.ProcessLauncher(
cfg.CONF, wait_interval=1.0
)

# add extra process worker and spawn there all workers with
# worker_process_count == 0
@@ -259,9 +264,9 @@ def _start_workers(workers):
'details.')


def start_all_workers():
def start_all_workers(neutron_api=None):
workers = _get_rpc_workers() + _get_plugins_workers()
launcher = _start_workers(workers)
launcher = _start_workers(workers, neutron_api)
registry.publish(resources.PROCESS, events.AFTER_SPAWN, None)
return launcher



+ 6
- 0
neutron/wsgi.py View File

@@ -224,6 +224,12 @@ class Server(object):
log_format=CONF.wsgi_log_format,
socket_timeout=self.client_socket_timeout)

@property
def process_launcher(self):
if isinstance(self._server, common_service.ProcessLauncher):
return self._server
return None


class Request(wsgi.Request):



Loading…
Cancel
Save