开发者

How do you access config outside of a request in CherryPy?

开发者 https://www.devze.com 2023-01-01 04:24 出处:网络
I\'ve got a webapp running on CherryPy that needs to access the CherryPy config files before a user creates a request. The docs say to use:

I've got a webapp running on CherryPy that needs to access the CherryPy config files before a user creates a request. The docs say to use:

host = cherrypy.request.app.config['database']['host']

But that won't work outside of a user request. You can also use the application object when you start the app like so:

...

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

host = application.config['database']['host']

...

But I can see no way of accessing 'application' from other classes outside of a user request.

I ask because our app looks at several databases a开发者_StackOverflow社区nd we set them up when the app starts rather than on user request. I have a feeling this would be useful in other places too; so is there any way to store a reference to 'application' somewhere or access it through the CherryPy API?


You can access it via the same cherrypy.tree object using the script name (minus the trailing slash):

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

However, as alluded to in other answers there are likely better ways to structure your code.


is there any way to store a reference to 'application' somewhere...

Just use normal Python. For a package called 'myapp':

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

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

However, I would recommend using config to set up your database objects, and then inspect those database objects instead of inspecting the config.

0

精彩评论

暂无评论...
验证码 换一张
取 消