gpt4 book ai didi

python - 如何在 Pyramid 休息框架中添加您的应用程序特定设置?

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:17 25 4
gpt4 key购买 nike

我是 Pyramid 新手。

问题是我无法弄清楚应用特定设置(键值对)如何在 Pyramid 中工作。

这是我在各种谷歌搜索和其他 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 = ''

这就是我在开发中启动服务器的方式

pserve development.ini

我读过 request.settings 可以给我设置,但这种方法对我来说不可行,因为我的 key 包含一个 1.5GB 的文件名,它必须一直存在于内存中。在服务器中加载该文件大约需要 5 分钟,因此无法按需加载文件。

请指教。

非常感谢您提前提供的所有帮助。

更新:

感谢提供的所有答案,我终于成功了。

这是我的主要功能的样子:

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')

然后我像这样放置我的应用特定设置 (development/production.py)

[custom]
my_key = value

问候

最佳答案

最简单的方法是将您的设置放在应用程序的 ma​​in 部分,名称以点分隔。示例:

[app:main]
websauna.site_name = Trees
websauna.site_tag_line = Enjoy
websauna.site_url = http://localhost:6543
websauna.site_author = Trees team

然后你可以这样做:

my_settings_value = request.registry.settings.get("websauna.site_name", "Default value)

WSGI 管道不会为您带来其他部分的设置,如果您想访问其他部分(据我所知),您需要使用 ConfigParser 重新解析 INI 文件。

如果您需要在开发期间加载大量数据,只需在设置中存储文件名并在需要访问数据时加载该文件,这样就不会减慢 Web 服务器的启动速度。

关于python - 如何在 Pyramid 休息框架中添加您的应用程序特定设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34511263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com