python - CherryPy 结合基于文件和字典的配置

标签 python configuration cherrypy

我正在设置一个 CherryPy 应用程序,并希望将我的大部分配置设置放在一个 .conf 文件中,如下所示:

[global]
server.socketPort = 8080
server.threadPool = 10
server.environment = "production"

但是我也想用这样的代码设置一些字典:

conf = {'/': {'tools.staticdir.on': True, 
              'tools.staticdir.dir': os.path.join(current_dir, 'templates')}}             

cherrypy.quickstart(HelloWorld(), config=conf)

是否可以将两个配置合并为一个,然后将其传递给配置快速启动选项?

最佳答案

quickstart 用于快速站点。如果您正在做像拥有多个配置这样复杂的事情,那么该毕业了。查看 quickstart 函数的源代码(这并不可怕!):您将把它解压到您的启动脚本中。所以不用 quickstart,而是这样写:

cherrypy.config.update(conffile)
cherrypy.config.update(confdict)

app = cherrypy.tree.mount(HelloWorld(), '/', conffile)
app.merge(confdict)

if hasattr(cherrypy.engine, "signal_handler"):
    cherrypy.engine.signal_handler.subscribe()
if hasattr(cherrypy.engine, "console_control_handler"):
    cherrypy.engine.console_control_handler.subscribe()
cherrypy.engine.start()
cherrypy.engine.block()

我们基本上在快速入门代码中添加了两行。首先,我们额外调用了 config.update;将配置字典合并到全局配置中。二、app.merge(confdict);这是为了将多个配置合并到每个应用程序中。

如果您希望文件配置覆盖字典,那么以相反的顺序执行这些操作是完全可以的。也可以将基于字典的配置粘贴到 HelloWorld._cp_config 中作为 described在文档中。

关于python - CherryPy 结合基于文件和字典的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3989763/

相关文章:

c# - 如何在 C# 中创建嵌套的自定义配置部分?

python - 如何使用 cherrypy 内置 ssl 模块(python 3)禁用 SSL3 和弱密码

python - CherryPy 与 Django

javascript - 使用cherrypy和JavaScript的HTML进度条

python - 摆脱 maxpooling 层会导致运行 cuda 内存错误 pytorch

configuration - Rspec 2 配置 :type types

python - 使用 python 将内容粘贴到单独的列中

java - 如何立即获取 ManagedService 配置?

python - 可训练的多参数事件。函数 (RBF) NeuPy/Theano

python - 将不在我的 git 存储库中的文件推送到 Heroku。