CherryPy:访问全局配置

时间:2011-05-20 10:54:08

标签: configuration-files cherrypy

我正在根据我在B itBucket repository找到的内容开发CherryPy应用程序。

在本例中,有两个配置文件,server.cfg(又名“global”)和app.cfg。

两个配置文件都加载在serve.py文件中:

# Update the global settings for the HTTP server and engine
cherrypy.config.update(os.path.join(self.conf_path, "server.cfg"))

# ...

# Our application
from webapp.app import Twiseless
webapp = Twiseless()
# Let's mount the application so that CherryPy can serve it
app = cherrypy.tree.mount(webapp, '/', os.path.join(self.conf_path, "app.cfg"))

现在,我想添加数据库配置。 我的第一个想法是将它添加到server.cfg中(这是最好的地方吗?还是它应该位于app.cfg中?)。

但是如果我在server.cfg中添加数据库配置,我不知道如何访问它。 使用:

cherrypy.request.app.config['Database']

仅当[Database]参数位于app.cfg中时才有效。

我尝试打印cherrypy.request.app.config,它只显示app.cfg中定义的值,server.cfg中没有。

所以我有两个相关的问题:

  • 最好将数据库连接放在server.cfg或app.cfg文件中
  • 如何在我的代码中访问server.cfg配置(又名全局)

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:3)

将其放入应用配置中。一个很好的问题可以帮助您决定将这些内容放在哪里,“如果我在/blogs在同一台服务器上安装了一个不相关的博客应用程序,我是否希望它能够共享该配置?”如果是这样,请将其放入服务器配置中。如果没有,请将其放入app config。

另请注意,全局配置未进行分区,因此无论如何都不能在[Database]部分中添加cherrypy.config.get("database_port")部分。只有app配置允许部分。如果你想在全局配置中坚持数据库设置,你必须考虑配置条目名称,如“database_port”。然后,您可以使用该名称直接访问它:{{1}}。