CherryPy:访问全局配置

3
我正在开发一个基于BitBucket存储库的CherryPy应用程序。
与这个例子一样,有两个配置文件,server.cfg(也称为“全局”)和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个回答

3
把它放在应用程序配置中。一个帮助你决定放置这些东西的好问题是:“如果我在同一台服务器上挂载了一个无关的博客应用程序到/blogs,我是否希望它共享该配置?” 如果是这样,请将其放在服务器配置中。如果不是,请将其放在应用程序配置中。
请注意,全局配置没有分组,因此您无法在其中插入[Database]部分。只有应用程序配置允许分组。如果您仍想将数据库设置放入全局配置中,则必须考虑使用类似“database_port”的配置条目名称。然后,您可以直接使用该名称访问它:cherrypy.config.get("database_port")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接