"Fossies" - the Fresh Open Source Software Archive

Member "neutron-14.0.3/neutron/server/wsgi_eventlet.py" (22 Oct 2019, 1497 Bytes) of package /linux/misc/openstack/neutron-14.0.3.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. For more information about "wsgi_eventlet.py" see the Fossies "Dox" file reference documentation.

    1 #!/usr/bin/env python
    2 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
    3 #    not use this file except in compliance with the License. You may obtain
    4 #    a copy of the License at
    5 #
    6 #         http://www.apache.org/licenses/LICENSE-2.0
    7 #
    8 #    Unless required by applicable law or agreed to in writing, software
    9 #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
   10 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
   11 #    License for the specific language governing permissions and limitations
   12 #    under the License.
   13 
   14 import eventlet
   15 
   16 from oslo_log import log
   17 
   18 from neutron import service
   19 
   20 LOG = log.getLogger(__name__)
   21 
   22 
   23 def eventlet_wsgi_server():
   24     neutron_api = service.serve_wsgi(service.NeutronApiService)
   25     start_api_and_rpc_workers(neutron_api)
   26 
   27 
   28 def start_api_and_rpc_workers(neutron_api):
   29     try:
   30         worker_launcher = service.start_all_workers()
   31 
   32         pool = eventlet.GreenPool()
   33         api_thread = pool.spawn(neutron_api.wait)
   34         plugin_workers_thread = pool.spawn(worker_launcher.wait)
   35 
   36         # api and other workers should die together. When one dies,
   37         # kill the other.
   38         api_thread.link(lambda gt: plugin_workers_thread.kill())
   39         plugin_workers_thread.link(lambda gt: api_thread.kill())
   40 
   41         pool.waitall()
   42     except NotImplementedError:
   43         LOG.info("RPC was already started in parent process by "
   44                  "plugin.")
   45 
   46         neutron_api.wait()