在金字塔中,我需要根据不同的运行时环境渲染我的模板 - 启用谷歌分析,使用缩小的代码等(在生产时)。有没有一种简单的方法来找出当前的环境 - 也许是一个现有的标志来找出使用了哪个ini文件?
答案 0 :(得分:15)
Pyramid INI文件可以保存arbitrary configuration entries,那么为什么不在文件中包含区分生产和开发部署的标志?
我会这样做的;在您的生产.ini文件中:[app:main]
production_deployment = True # Set to False in your development .ini file
将此值传递给Pyramid Configurator:
def main(global_config, **settings):
# ...
from pyramid.settings import asbool
production_deployment = asbool(settings.get(
'production_deployment', 'false'))
settings['production_deployment'] = production_deployment
config = Configurator(settings=settings)
您现在可以从Pyramid代码中的任何位置访问设置。例如,在请求处理程序中:
settings = request.registry.settings
if settings['production_deployment']:
# Enable some production code here.
但是,在这种情况下,我还会使用更多精细设置;用于启用Google Analytics的标志,用于缩小资源等的标志。这样,您可以测试开发环境中的每个设置,为这些开关编写单元测试等。
答案 1 :(得分:3)
我将此类事物设置为名为PYRAMID_ENV
的环境变量,可以通过os.environ
查看。例如,在您的代码中:
import os
pyramid_env = os.environ.get('PYRAMID_ENV', 'debug')
if pyramid_env == 'debug':
# Setup debug things...
else:
# Setup production things...
然后,您可以在init脚本中或启动服务器时设置变量:
PYRAMID_ENV=production python server.py