3

我有一个在 CherryPy 上运行的 web 应用程序,它需要在用户创建请求之前访问 CherryPy 配置文件。文档说要使用:

主机=cherrypy.request.app.config['数据库']['主机']

但这在用户请求之外不起作用。您还可以在启动应用程序时使用应用程序对象,如下所示:

...
application = cherrypy.tree.mount(root, '/', app_conf)
host = application.config['database']['host']
...

但是我看不到从用户请求之外的其他类访问“应用程序”的方法。

我问是因为我们的应用程序会查看多个数据库,并且我们在应用程序启动时而不是在用户请求时设置它们。我觉得这在其他地方也很有用;那么有什么方法可以在某处存储对“应用程序”的引用或通过 CherryPy API 访问它?

4

2 回答 2

2

您可以使用脚本名称(减去尾部斜杠)通过相同的 cherrypy.tree 对象访问它:

application = cherrypy.tree.apps['']
host = application.config['database']['host']

但是,正如在其他答案中提到的那样,可能有更好的方法来构建您的代码。

于 2011-06-28T16:15:49.367 回答
0

有什么方法可以在某处存储对“应用程序”的引用...

只需使用普通的 Python。对于名为“myapp”的包:

# __init__.py
...
application = cherrypy.tree.mount(root, '/', app_conf)
...

# notarequest.py
import myapp
host = myapp.application.config['database']['host']

但是,我建议使用 config 来设置数据库对象,然后检查这些数据库对象而不是检查配置。

于 2010-05-28T18:13:07.117 回答