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进程的“全局”配置数据。

_apply(config)[源代码]

根据字典更新自我。

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}}
update(config)[源代码]

从字典、文件或文件名更新自我。

class cherrypy._cpconfig._Vars(target)[源代码]

基类:object

允许在函数或类上设置默认属性的适配器。

setdefault(key, default)[源代码]
cherrypy._cpconfig._engine_namespace_handler(k, v)[源代码]

“Engine”命名空间的配置处理程序。

cherrypy._cpconfig._if_filename_register_autoreload(ob)[源代码]

如果ob是字符串(假定为文件名),则注册自动重新加载。

cherrypy._cpconfig._server_namespace_handler(k, v)[源代码]

“server”命名空间的配置处理程序。

cherrypy._cpconfig._tree_namespace_handler(k, v)[源代码]

“tree”配置命名空间的命名空间处理程序。

cherrypy._cpconfig.merge(base, other)[源代码]

将一个应用配置(从字典、文件或文件名)合并到另一个。

如果给定的配置是文件名,它将被附加到要监视“自动重新加载”更改的文件列表中。