cherrypy._cpwsgi模块

WSGI接口(参见PEP 333和3333)。

请注意,WSGI环境键和值是“原生字符串”;也就是说,无论“”的类型是什么。对于Python2,这是一个字节字符串;对于Python3,这是一个Unicode字符串。但是PEP3333说:“即使Python的字符串类型实际上是Unicode,”在幕后“,原生字符串的内容必须仍然可以通过拉丁文-1编码转换成字节!”

class cherrypy._cpwsgi.AppResponse(environ, start_response, cpapp)[源代码]

基类:object

CherryPy应用程序可迭代的WSGI响应。

close()[源代码]

关闭并取消引用当前请求和响应。(核心)

headerNames = {'CONTENT_LENGTH': 'Content-Length', 'CONTENT_TYPE': 'Content-Type', 'HTTP_CGI_AUTHORIZATION': 'Authorization', 'REMOTE_ADDR': 'Remote-Addr', 'REMOTE_HOST': 'Remote-Host'}
recode_path_qs(path, qs)[源代码]
run()[源代码]

使用environ创建一个Request对象。

translate_headers(environ)[源代码]

将cgi-environ标头名称转换为HTTP标头名称。

class cherrypy._cpwsgi.CPWSGIApp(cpapp, pipeline=None)[源代码]

基类:object

CherryPy应用程序的WSGI应用程序对象。

config = {}

键与管道中列出的名称匹配的字典。每个值都是另一个DICT,它将作为关键字参数传递给相应的命名WSGI Callable(从管道)。

head = None

不是在每次调用时嵌套管道中的所有应用程序,而是只在第一次执行,结果会被记录到self.head中。如果在调用self之后更改self.Pipeline,请再次将其设置为None。

namespace_handler(k, v)[源代码]

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

pipeline = [('ExceptionTrapper', <class 'cherrypy._cpwsgi.ExceptionTrapper'>), ('InternalRedirector', <class 'cherrypy._cpwsgi.InternalRedirector'>)]

(name,wsgiapp)对的列表。每个“wsgiapp”必须是一个构造函数,该构造函数接受初始的位置“nextapp”参数,外加可选的关键字参数,并返回WSGI应用程序(接受environ和start_response参数)。“name”可以是您选择的任何名称,并且将与self.config中的键相对应。

response_class

要实例化并作为WSGI链中的下一个应用程序返回的类。

:py:class:`cherrypy._cpwsgi.AppResponse`的别名

tail(environ, start_response)[源代码]

实际CherryPy应用程序可调用的WSGI应用程序。

你可能不应该打这个电话;打给 self.__call__ 相反,这样self.Pipeline中的任何WSGI中间件都可以首先运行。

class cherrypy._cpwsgi.ExceptionTrapper(nextapp, throws=(<class 'KeyboardInterrupt'>, <class 'SystemExit'>))[源代码]

基类:object

捕获异常的WSGI中间件。

class cherrypy._cpwsgi.InternalRedirector(nextapp, recursive=False)[源代码]

基类:object

处理引发的cherrypy.InternalRedirect的WSGI中间件。

class cherrypy._cpwsgi.VirtualHost(default, domains=None, use_x_forwarded_host=True)[源代码]

基类:object

根据Host标头选择不同的WSGI应用程序。

当在一台CP服务器中运行多个站点时,这会很有用。它允许多个域指向不同的应用程序。例如::

root = Root()
RootApp = cherrypy.Application(root)
Domain2App = cherrypy.Application(root)
SecureApp = cherrypy.Application(Secure())

vhost = cherrypy._cpwsgi.VirtualHost(
    RootApp,
    domains={
        'www.domain2.example': Domain2App,
        'www.domain2.example:443': SecureApp,
    },
)

cherrypy.tree.graft(vhost)
default = None

必填项。默认的WSGI应用程序。

domains = {}

应用程序}对。在此DICT中查找传入的“Host”请求头,如果找到匹配项,则将调用相应的WSGI应用程序,而不是默认的WSGI应用程序。请注意,“example.com”和“www.example.com”通常需要单独的条目。此外,“Host”报头可能包含端口号。

类型

{主机标头值}的字典

use_x_forwarded_host = True

如果为True(默认值),将使用任何“X-Forwarded-Host”请求标头而不是“Host”标头。这通常由HTTP服务器(如Apache)在代理时添加。

class cherrypy._cpwsgi._TrappedResponse(nextapp, environ, start_response, throws)[源代码]

基类:object

close()[源代码]
response = <list_iterator object>
trap(func, *args, **kwargs)[源代码]
cherrypy._cpwsgi.downgrade_wsgi_ux_to_1x(environ)[源代码]

从给定的WSGI u.x环境返回WSGI 1.x的新环境字典。