cherrypy._cpconfig模块¶
CherryPy的配置系统。
CherryPy中的配置是通过字典实现的。键是命名映射值的字符串,可以是任何类型。
架构¶
CherryPy请求是在全局上下文中运行的应用程序的一部分,配置数据可以应用于这三个作用域中的任何一个:
- 全球
适用于所有地方的配置条目存储在cherrypy.config中。
- 应用程序
应用于每个已装载应用程序的条目存储在Application对象本身上,名为“app.config”。这是一个两级字典,其中每个键都是一个路径或“相对URL”(例如,“/”或“/path/to/my/page”),每个值都是一个配置字典。通常,此数据是在对tree.mount(root(),config=conf)的调用中提供的,不过您也可以使用app.merge(Conf)。
- 请求
每个请求对象都有一个“Request.config”字典。在请求过程的早期,通过合并全局配置条目、应用程序条目(其路径等于或是Request.path_info的父项)和在查找页面处理程序时获得的任何配置来填充此字典(参见下文)。
申报¶
配置数据可以作为Python字典、文件名或打开的文件对象提供。当您提供文件名或文件时,CherryPy使用Python的内置ConfigParser;您可以通过将每个路径编写为节标题来声明应用程序配置::
[/path/to/my/page]
request.stream = True
若要声明全局配置条目,请将它们放在 [全球] 部分。
属性直接在组成CherryPy应用程序的类和方法(页面处理程序)上声明配置项 _cp_config
属性,使用 cherrypy.config
装饰师。例如::
@cherrypy.config(**{'tools.gzip.on': True})
class Demo:
@cherrypy.expose
@cherrypy.config(**{'request.show_tracebacks': False})
def index(self):
return "Hello world"
注解
此行为仅对默认调度程序有保证。其他调度程序可能对您可以附加配置属性的位置有不同的限制。
命名空间¶
配置键由第一个“”分隔为多个名称空间。在钥匙里。当前命名空间:
- 发动机
控制“应用程序引擎”,包括自动重新加载。这些只能在全局配置中声明。
- 树
将cherrypy.Application对象移植到cherrypy.tree上。这些只能在全局配置中声明。
- 钩子
声明其他请求处理函数。
- 日志
配置每个应用程序的日志记录。这些只能在全局或/config中声明。
- 请求
向每个请求添加属性。
- 响应
向每个响应添加属性。
- 服务器
通过cherrypy.server控制默认HTTP服务器。这些只能在全局配置中声明。
- 工具
运行和配置其他请求处理包。
- WSGI
将WSGI中间件添加到应用程序的“流水线”。这些只能在应用程序的根配置(“/”)中声明。
- 方格
控制“检查器”,该检查器在引擎启动时查找应用程序状态(包括配置)中的常见错误。仅限全局配置。
名称空间中不存在的唯一关键字是“Environment”条目。此特殊条目从存储在cherrypy._cpconfig.Environment中的模板‘导入’其他配置条目 [环境] 。它仅适用于全局配置,并且仅当您使用cherrypy.config.update时才适用。
您可以定义要在全局、应用程序或请求级别调用的名称空间,方法是向cherrypy.config.nampaces、app.nampaces或app.request_class.nampaces添加命名处理程序。名称可以是任何字符串,处理程序必须是可调用的或(Python2.5样式)上下文管理器。
- class cherrypy._cpconfig.Config(file=None, **kwargs)[源代码]¶
基类:
cherrypy.lib.reprconf.Config
整个CherryPy进程的“全局”配置数据。
- environments = {'embedded': {'checker.on': False, 'engine.SIGHUP': None, 'engine.SIGTERM': None, 'engine.autoreload.on': False, 'log.screen': False, 'request.show_mismatched_params': False, 'request.show_tracebacks': False, 'tools.log_headers.on': False}, 'production': {'checker.on': False, 'engine.autoreload.on': False, 'log.screen': False, 'request.show_mismatched_params': False, 'request.show_tracebacks': False, 'tools.log_headers.on': False}, 'staging': {'checker.on': False, 'engine.autoreload.on': False, 'request.show_mismatched_params': False, 'request.show_tracebacks': False, 'tools.log_headers.on': False}, 'test_suite': {'checker.on': False, 'engine.autoreload.on': False, 'log.screen': False, 'request.show_mismatched_params': True, 'request.show_tracebacks': True, 'tools.log_headers.on': False}}¶