我正在设置一个 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/