spinngod.py - начальный код приложения колбы
from app import create_app
import sys
run_profile = str(sys.argv[1]) if len(sys.argv) >= 2 else 'development'
app = create_app(run_profile)
print("App Root Path:" + app.root_path)
if __name__ == '__main__':
print sys.path
app.run(debug=True, host='0.0.0.0')
app / init .py - создает приложение фляги
def create_app(profile_name):
print "currently active profile:" + profile_name
app = Flask(__name__)
############# configurations ####################
app.config.from_object(config[profile_name])
configure_app(app)
configure_app_logger(app)
#################### blueprint registration and rest_plus namespace additions ###############
from api_1_0 import api as api_1_0_blueprint
from api_1_0.restplus import api_restplus
# ************************************************** #
api_restplus.init_app(api_1_0_blueprint)
api_restplus.add_namespace(application_namespace)
api_restplus.add_namespace(pipeline_template_namespace)
api_restplus.add_namespace(loadbalancer_namespace)
api_restplus.add_namespace(servergroup_namespace)
api_restplus.add_namespace(task_namespace)
# ************************************************** #
app.register_blueprint(api_1_0_blueprint)
##############################################################
return app
Я хочу получить доступ к переменным конфигурации фляги, определенным в config.py, в некоторых других файлах, которые находятся вне контекста приложения. Конфигурация приложения зависит от того, с каким профилем оно запущено (dev, stage или production) и которое передается из командной строки в виде аргумента.
Единственный способ получить доступ к переменным конфигурации вне контекста приложения - это установить профиль (dev, stage или prod) в качестве переменной среды и
затем импортируйте напрямую из конфигурационного файла.
Второй способ, которым я попытался, - это перенести создание приложения фляги в метод app / init .py.
Вот так я пытаюсь получить доступ к переменным конфигурации в другом классе.
import requests
class Client(object):
def __init__(self):
from app import app
print "fjaijflkajsf" + app.config['SPINNAKER_BASE_URL']
pass
Есть ли способ сделать это лучше в колбе?