16a5431c66
This teaches glance-api how to do async threading things when it is running in pure-WSGI mode. In order to do that, a refactoring of things that currently depend on eventlet is required. It adds a [wsgi]/task_pool_threads configuration knob, which is used in the case of pure-WSGI and native threads to constrain the number of threads in that pool (and thus the task parallelism). This will allow tuning by the operator, but also lets us default that to just a single thread in the backport of these fixes so that we can avoid introducing a new larger footprint in the backport unexpectedly. Partial-Bug: #1888713 Depends-On: https://review.opendev.org/#/c/742047/ Change-Id: Ie15028b75fb8518ec2b0c0c0386d21782166f759
50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
# Copyright 2010-2011 OpenStack Foundation
|
|
# 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.
|
|
|
|
import os
|
|
|
|
import eventlet
|
|
# NOTE(jokke): As per the eventlet commit
|
|
# b756447bab51046dfc6f1e0e299cc997ab343701 there's circular import happening
|
|
# which can be solved making sure the hubs are properly and fully imported
|
|
# before calling monkey_patch(). This is solved in eventlet 0.22.0 but we
|
|
# need to address it before that is widely used around.
|
|
eventlet.hubs.get_hub()
|
|
|
|
if os.name == 'nt':
|
|
# eventlet monkey patching the os module causes subprocess.Popen to fail
|
|
# on Windows when using pipes due to missing non-blocking IO support.
|
|
eventlet.patcher.monkey_patch(os=False)
|
|
else:
|
|
eventlet.patcher.monkey_patch()
|
|
|
|
import glance.async_
|
|
# NOTE(danms): Default to eventlet threading for tests
|
|
glance.async_.set_threadpool_model('eventlet')
|
|
|
|
# See http://code.google.com/p/python-nose/issues/detail?id=373
|
|
# The code below enables tests to work with i18n _() blocks
|
|
import six.moves.builtins as __builtin__
|
|
setattr(__builtin__, '_', lambda x: x)
|
|
|
|
# Set up logging to output debugging
|
|
import logging
|
|
logger = logging.getLogger()
|
|
hdlr = logging.FileHandler('run_tests.log', 'w')
|
|
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
|
|
hdlr.setFormatter(formatter)
|
|
logger.addHandler(hdlr)
|
|
logger.setLevel(logging.DEBUG)
|