Я новичок в пирамиде.Как добавить настройки вашего приложения в рамки для сохранения пирамиды?
Проблема: я не могу понять, как конкретные настройки приложения (пары ключевых значений) работают в пирамиде.
Это то, что я сделал после того, как различные поиски Google и других StackOverflow ответов:
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
if '__file__' in global_config:
settings.update(
load_sensitive_settings(global_config['__file__'], global_config))
config = Configurator(settings=settings)
config.include('pyramid_chameleon')
# config.add_static_view('static', 'static', cache_max_age=3600)
# config.add_route('home', '/')
config.add_route(
'tags',
'/tags', request_method='POST', accept='application/json',)
config.scan()
return config.make_wsgi_app()
def load_sensitive_settings(configurationPath, defaultByKey):
'Load sensitive settings from hidden configuration file'
# configFolder, configName = os.path.split(configurationPath)
# sensitivePath = os.path.join(configFolder, '.' + configName)
sensitivePath = configurationPath
settings = {}
configParser = ConfigParser.ConfigParser(defaultByKey)
if not configParser.read(sensitivePath):
log.warn('Could not open %s' % sensitivePath)
return settings
settings.update(configParser.items('custom'))
return settings
У меня есть файл, где я пытаюсь извлечь параметры, как это:
from pyramid.threadlocal import get_current_registry
settings = get_current_registry().settings
value = settings['my_key']
Но я всегда получаю объект настроек как None.
Это, как я определяю свои пользовательские настройки в development.ini
[custom]
my_key = ''
Это, как я начинаю свой сервер в develpoment
pserve development.ini
Я прочитал, что request.settings может дать мне , но этот подход для меня невозможен, так как мой ключ содержит имя файла размером 1,5 ГБ, и он должен присутствовать в памяти все время. Загрузка этого файла на сервер занимает около 5 минут, поэтому он не может загружать файл по требованию.
Прошу совета.
Большое спасибо за помощь.
Update:
Спасибо всем ответы, я, наконец, сделал его работу.
Это как моя основная функция выглядит следующим образом:
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(settings=settings)
config.include('pyramid_chameleon')
if '__file__' in global_config:
init_config(global_config['__file__'])
И я сделал конфигурационный файл, это как мой конфигурационный файл выглядит следующим образом:
import ConfigParser
settings = dict()
def init_config(filename):
config = ConfigParser.ConfigParser()
config.read(filename)
settings_dict = config.items('custom')
settings.update(settings_dict)
Теперь везде, где я хочу настройки, Я только что сделал:
from projectname.config import settings
settings.get('my_key')
И я установил свои настройки для приложения (разработка/продуктi on.py) нравится эта
[custom]
my_key = value
С уважением
HM
Спасибо. Создание файла настроек python из файла настроек (* .ini), предоставленного во время выполнения, является единственным возможным решением. –