Implements blueprint multi-process-api-service This is based on Huang Zhiteng's patch. This patch adds support for running services as multiple processes. This is primarily intended to be used with the API service as a way to provide more concurrency than eventlet can sometimes provide. A SIGTERM or SIGINT signal will cause the parent process to gracefully terminate the child processes, allowing them to finish processing the requests currently being processed. The parent will wait for the children to finish before exiting. Change-Id: Ie6d6802626eb42d5e64c4167be363fbf6cea2a1b
47 lines
1.4 KiB
Python
Executable File
47 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
|
|
# Copyright 2010 United States Government as represented by the
|
|
# Administrator of the National Aeronautics and Space Administration.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
"""Starter script for Nova OS API."""
|
|
|
|
import eventlet
|
|
eventlet.monkey_patch(os=False)
|
|
|
|
import os
|
|
import sys
|
|
|
|
|
|
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(
|
|
sys.argv[0]), os.pardir, os.pardir))
|
|
if os.path.exists(os.path.join(possible_topdir, "nova", "__init__.py")):
|
|
sys.path.insert(0, possible_topdir)
|
|
|
|
|
|
from nova import flags
|
|
from nova import log as logging
|
|
from nova import service
|
|
from nova import utils
|
|
|
|
if __name__ == '__main__':
|
|
flags.parse_args(sys.argv)
|
|
logging.setup()
|
|
utils.monkey_patch()
|
|
server = service.WSGIService('osapi_compute')
|
|
service.serve(server, workers=server.workers)
|
|
service.wait()
|