cherrypy._cprequest模块

class cherrypy._cprequest.Hook(callback, failsafe=None, priority=None, **kwargs)[源代码]

基类:object

回调及其元数据:故障安全、优先级和kwargs。

callback = None

此Hook对象正在包装的空可调用对象,它将在调用Hook时调用。

failsafe = False

如果为True,则即使来自同一调用点的其他回调引发异常,也保证回调运行。

kwargs = {}

将在每次调用时传递给可调用对象的一组关键字参数。

priority = 50

定义钩子列表的执行顺序。优先级数应限制在闭合间隔内 [0,100] ,但是超出此范围的值是可以接受的,分数值也是可以接受的。

class cherrypy._cprequest.HookMap(points=None)[源代码]

基类:dict

调用点到回调列表(Hook对象)的映射。

attach(point, callback, failsafe=None, priority=None, **kwargs)[源代码]

追加从提供的参数生成的新钩子。

copy() a shallow copy of D
run(point)[源代码]

执行给定点的所有注册钩子(回调)。

classmethod run_hooks(hooks)[源代码]

执行指示的挂钩,捕获错误。

带钩的钩子 .failsafe == True 即使同一挂接点上的其他挂接点出现故障,都保证运行。在这种情况下,记录故障并继续执行下一个挂钩。从其中一个钩子停止所有处理的唯一方法是引发一个类似SystemExit或KeyboardInterrupt的BaseException,然后停止整个服务器。

class cherrypy._cprequest.LazyUUID4[源代码]

基类:object

property uuid4

使用UUID4为每个请求提供唯一ID。

它在渲染时延迟求值。

class cherrypy._cprequest.Request(local_host, remote_host, scheme='http', server_protocol='HTTP/1.1')[源代码]

基类:object

HTTP请求。

此对象表示HTTP请求消息的元数据;也就是说,它包含描述发送请求URL、标头和正文的环境的属性(如果您希望工具解释标头和正文,则它们在别处,主要在工具中)。这个“元数据”由套接字数据、传输特征和请求行组成。该对象还包含关于给定URL的有效配置以及用于生成响应的执行计划的数据。

_do_respond(path_info)[源代码]
app = None

处理此请求的cherrypy.Application对象。

base = ''

//host)部分请求的URL。在某些情况下(例如,当通过mod_rewrite代理时),这可能包含cherrypy.url在构建url时使用的路径段,但否则cherryPy会忽略这些路径段。无论如何,此值不得以劈开结尾。

类型

(方案)

body = None

如果请求的Content-Type为‘application/x-www-form-urlencode’或multipart,则为None。否则,这将是 RequestBody (您可以.read());此值设置在‘BEFORE_REQUEST_BODY’和‘BEFORE_HANDLER’挂钩之间(假设PROCESS_REQUEST_BODY为True)。

close()[源代码]

运行清理代码。(核心)

closed = False

调用Close方法后为true,否则为false。

config = None

适用于当前请求的所有配置条目的平面字典。这些条目是从全局配置、应用程序配置(基于request.path_info)和处理程序配置中收集的(确切地说,处理程序配置是如何由对此请求有效的request.Dispatch对象管理的;默认情况下,处理程序配置可以附加到树中request.app.root和最终处理程序之间的任何位置,并向下继承)。

cookie = {}

请参见帮助(Cookie)。

dispatch = <cherrypy._cpdispatch.Dispatcher object>

根据PATH_INFO、其他请求属性和应用程序体系结构查找可调用的“页面处理程序”并收集当前请求的配置的对象。内核尽可能早地调用调度程序,向其传递一个“path_info”参数。

默认调度程序通过将path_info与对象的分层排列(从request.app.root开始)进行匹配来发现页面处理程序。有关详细信息,请参阅帮助(cherrypy.dispatch)。

error_page = {}

响应文件名或可调用}对。

错误代码必须是表示给定HTTP错误代码的int或字符串‘default’,如果找不到与给定数字代码匹配的条目,将使用该字符串。

如果提供了文件名,则文件应包含Python字符串格式模板,并且默认情况下可以接收具有映射键%(Status)s、%(Message)s、%(Traceback)s和%(Version)s的格式值。可以通过覆盖HTTPError.set_response来扩展格式映射集。

如果提供了Callable,则默认情况下将使用关键字参数“status”、“message”、“traceback”和“version”调用它,就像字符串格式模板一样。Callable必须返回一个字符串或字符串的可迭代,它们将被设置为response.body。它还可以覆盖报头或执行任何其他处理。

如果没有给出错误代码条目,并且不存在“默认”条目,则将使用默认模板。

类型

{错误代码}的字典

error_response()

no-arg可调用函数,它将在请求处理期间处理意外的未捕获错误。这不用于为响应预期条件而引发的预期异常(如NotFound、HTTPError或HTTPRedirect)(这些异常应通过request.error_page或覆盖HTTPError.set_response进行自定义)。默认情况下,ERROR_RESPONSE使用HTTPError(500)向用户代理返回一般错误响应。

get_resource(path)[源代码]

调用调度程序(设置self.handler和.config)。(核心)

handle_error()[源代码]

处理最后一个意外异常。(核心)

handler = None

CherryPy将调用以生成响应的函数、方法或其他可调用对象。处理程序的发现和它将接收的参数由request.Dispatch对象确定。默认情况下,通过遍历从request.app.root开始的对象树来发现处理程序,然后将所有HTTP参数(来自查询字符串和POST正文)作为关键字参数传递。

header_list = []

(名称、值)元组形式的HTTP请求标头列表。通常,您应该改用request.headers(一个字典)。

headers = {}

包含请求头的类似字典的对象。键是标题名称(采用标题-大小写格式);但是,您可以不区分大小写的方式获取和设置它们。也就是说,标头 ['Content-Type'] 和标头 ['content-type'] 请参考相同的值。值是标头值(根据解码 RFC 2047 (如有需要)。另请参阅:httputil.HeaderMap、httputil.HeaderElement。

hooks = {'after_error_response': [], 'before_error_response': [], 'before_finalize': [], 'before_handler': [], 'before_request_body': [], 'on_end_request': [], 'on_end_resource': [], 'on_start_resource': []}

[胡克,..。] }。每个键都是一个命名钩点字符串,每个值都是一个钩子列表,在此请求期间将在该钩点处调用这些钩子。钩子列表通常尽可能早地填充(主要来自config中指定的工具),但可以随时扩展。另请参见:_cprequest.Hook、_cprequest.HookMap和cherrypy.tools。

类型

表单的HookMap(类似字典的对象)

类型

{钩点

is_index = None

如果当前请求映射到“index”资源处理程序(如果PATH_INFO以劈开结尾,则为“默认”处理程序),则为True。该值可用于自动将用户代理重定向到添加或删除尾随劈开的“更规范”的url。请参见cherrypy.tools.trading_劈开。

local = httputil.Host('127.0.0.1', 80, '127.0.0.1')

服务器套接字的httputil.Host(IP,端口,主机名)对象。

login = None

当在请求处理期间使用身份验证时,如果失败则设置为“false”,如果成功则设置为“username”值。默认的“None”表示没有进行身份验证。

method = 'GET'

指示要对由Request-URI标识的资源执行的HTTP方法。常用方法包括GET、HEAD、POST、PUT和DELETE。CherryPy允许任何扩展方法;但是,各种HTTP服务器和网关可能会限制允许的方法集。CherryPy应用程序应该限制集合(基于每个URI)。

methods_with_bodies = ('POST', 'PUT', 'PATCH')

CherryPy将自动尝试从rfile读取正文的HTTP方法序列。如果要更改此属性,请在配置(推荐)或“钩点”上修改它 on_start_resource

namespaces = {'error_page': <function error_page_namespace>, 'hooks': <function hooks_namespace>, 'request': <function request_namespace>, 'response': <function response_namespace>, 'tools': <cherrypy._cptools.Toolbox object>}
params = {}

组合查询字符串(GET)和请求实体(POST)变量的字典。这分两个阶段进行填充:GET参数添加在“ON_START_RESOURCE”挂接之前,POST参数添加在“BEFORE_REQUEST_BODY”和“BEFORE_HANDLER”挂接之间。

path_info = '/'

请求URI的“相对路径”部分。这与处理此请求的应用程序的script_name(‘装载点’)相关。

prev = None

前一个请求对象(如果有)。除非我们正在处理InternalRedirect,否则该值应为None。

process_headers()[源代码]

将HTTP头数据解析为Python结构。(核心)

process_query_string()[源代码]

将查询字符串解析为Python结构。(核心)

process_request_body = True

如果为True,则自动读取和解析rfile(如果有),并将结果放入request.params或request.body中。

protocol = (1, 1)

与响应中应允许的功能集相对应的HTTP协议版本。如果客户机的请求消息和服务器的HTTP遵从性级别都是HTTP/1.1,则此属性将是元组(1,1)。如果任一为1.0,则此属性将是元组(1,0)。不明确支持较低的HTTP协议版本。

query_string = ''

Request-URI的查询组件,资源要解释的信息字符串。URI的查询部分跟在路径部分之后,并由‘?’分隔。例如,URI‘http://www.cherrypy.org/wiki?a=3&b=4’具有查询组件‘a=3&b=4’。

query_string_encoding = 'utf8'

%祸不单行祸不单行解码后查询字符串参数预期的编码)。如果提供的查询字符串不能用此编码解码,则引发404(因为从技术上讲,它是一个不同的URI)。如果您希望任意编码不出错,请将其设置为“拉丁文-1”;然后您可以重新编码为字节,并在以后重新解码为您喜欢的任何编码。

remote = httputil.Host('127.0.0.1', 1111, '127.0.0.1')

客户端套接字的httputil.Host(IP、端口、主机名)对象。

request_line = ''

从客户端接收的完整请求行。这是由请求方法、URI和协议版本(用空格连接)组成的单个字符串。任何最终的CRLF都将被删除。

respond(path_info)[源代码]

为self.path_info处的资源生成响应。(核心)

rfile = None

如果请求包含实体(正文),则它将在此属性中作为流可用。但是,通常会在‘BEFORE_REQUEST_BODY’挂接和‘BEFORE_HANDLER’挂接之间读取rfile,并将结果字符串放入request.params或request.body属性中。

您可以通过将request.process_request_body设置为false来禁用rfile的自动使用,方法是在所需路径的配置中,或者在‘ON_START_RESOURCE’或‘BEFORE_REQUEST_BODY’挂接中。

警告:几乎在任何情况下,您都不应该在CherryPy的自动机制读取rfile流之后尝试读取它。如果关闭了rfile的自动解析,则应准确读取request.headers中指定的字节数 ['Content-Length'] 。忽略这些警告中的任何一个都可能导致请求线程挂起或损坏下一个(流水线)请求。

run(method, path, query_string, req_protocol, headers, rfile)[源代码]

处理请求。(核心)

方法、路径、查询字符串和请求协议应该直接从请求行中拉出(例如“GET/PATH?KEY=val HTTP/1.0”)。

路径

它应该是%XX-不带引号,但QUERY_STRING不应该是。

使用Python 2时,它们必须都是字节字符串,而不是Unicode字符串。

使用Python3时,它们必须都是Unicode字符串,而不是字节字符串,并且最好不要伪装成Unicode的字节x00-xFF。

标题

(名称、值)元组的列表。

rfile

包含HTTP请求实体的类似文件的对象。

run()完成后,返回的对象应该有3个属性:

  • 状态,例如“200 OK”

  • HEADER_LIST,(名称、值)元组列表

  • 身体,一根可迭代的屈服弦

然后,使用者代码(HTTP服务器)应该访问这些响应属性来构建出站流。

scheme = 'http'

客户端和服务器之间使用的协议。在大多数情况下,这将是‘http’或‘https’。

script_name = ''

正在处理此请求的应用程序的“装入点”。

此属性不能以劈开结尾。如果script_name引用URI的根,则它必须是空字符串(不是“/”)。

server_protocol = 'HTTP/1.1'

HTTP服务器至少有条件地符合的HTTP版本。

show_mismatched_params = True

如果为True,则在PageHandler调用处理期间遇到的不匹配参数将包括在响应正文中。

show_tracebacks = True

如果为True,则在请求处理期间遇到的意外错误将在响应正文中包含回溯。

stage = None

包含请求处理过程中达到的阶段的字符串。这在调试具有挂起请求的活动服务器时很有用。

throw_errors = False

如果为True,Request.run将不会捕获任何错误(HTTPRedirect和HTTPError除外,这两个更恰当的名称是“Exception”,而不是Error)。

throws = (<class 'KeyboardInterrupt'>, <class 'SystemExit'>, <class 'cherrypy._cperror.InternalRedirect'>)

Request.run没有捕获的异常序列。

toolmaps = {}

此请求有效的所有工具箱和工具的嵌套字典,格式为:{Toolbox.nampace:{Tool.name:config dict}}。

unique_id = None

在上生成并存储UUID4的惰性对象 str() 渲染。

class cherrypy._cprequest.Response[源代码]

基类:object

HTTP响应,包括状态、标头和正文。

_flush_body()[源代码]

丢弃self.body,但使用任何生成器,以便可以进行任何终结,如caching.teeoutput()所需。

body

HTTP响应的正文(实体)。

collapse_body()[源代码]

将self.body折叠为单个字符串;替换它并返回它。

cookie = {}

请参见帮助(Cookie)。

finalize()[源代码]

将头文件(和cookie)转换为self.header_list。(核心)

header_list = []

(名称、值)元组形式的HTTP响应头的列表。通常,您应该改用response.headers(字典)。该属性是从response.headers生成的,只有在Finalize阶段之后才有效。

headers = {}

包含响应头的类似字典的对象。键是标题名称(采用标题-大小写格式);但是,您可以不区分大小写的方式获取和设置它们。也就是说,标头 ['Content-Type'] 和标头 ['content-type'] 请参考相同的值。值是标头值(根据解码 RFC 2047 (如有需要)。

参见

班级 HeaderMapHeaderElement

status = ''

HTTP状态代码和原因短语。

stream = False

如果为false,则缓冲响应正文。

time = None

创建时time.time()的值。在HTTP日期中使用。

class cherrypy._cprequest.ResponseBody[源代码]

基类:object

HTTP响应的正文(响应实体)。

unicode_err = 'Page handlers MUST return bytes. Use tools.encode if you wish to return unicode.'
cherrypy._cprequest.error_page_namespace(k, v)[源代码]

附加在配置中声明的错误页。

cherrypy._cprequest.hooks_namespace(k, v)[源代码]

附加在配置中声明的裸钩。

cherrypy._cprequest.request_namespace(k, v)[源代码]

附加配置中声明的请求属性。

cherrypy._cprequest.response_namespace(k, v)[源代码]

附加在配置中声明的响应属性。