heat.common.wsgi 模块

用于处理 WSGI 服务器的实用方法。

class heat.common.wsgi.AppFactory(conf)[source]

基类: BasePasteFactory

通用的 paste.deploy 应用工厂。

这需要将 heat.app_factory 设置为可调用对象,该对象在被调用时返回一个 WSGI 应用。名称的格式为 <模块>:<可调用对象> 例如:

[app:apiv1app] paste.app_factory = heat.common.wsgi:app_factory heat.app_factory = heat.api.cfn.v1:API

WSGI 应用构造函数必须接受一个 ConfigOpts 对象和一个本地配置字典作为它的两个参数。

KEY = 'heat.app_factory'
class heat.common.wsgi.BasePasteFactory(conf)[source]

基类: object

paste 应用和过滤器工厂的基类。

子类必须覆盖 KEY 类属性并提供一个 __call__ 方法。

KEY = None
class heat.common.wsgi.Debug(application)[source]

基类: Middleware

用于获取请求和响应信息的辅助类。

可以插入到任何 WSGI 应用链中的辅助类,用于获取请求和响应信息。

static print_generator(app_iter)[source]

在迭代时打印包装字符串迭代器的内容。

class heat.common.wsgi.DefaultMethodController[source]

基类: object

处理 OPTIONS 请求方法的控制器。

此控制器处理 OPTIONS 请求方法以及应用未显式实现的任何 HTTP 方法。

options(req, allowed_methods, *args, **kwargs)[source]

返回一个包含“Allow”标头的响应。

返回一个包含“Allow”标头的响应,其中列出了已实现的 HTTP 方法。使用 204 状态码作为此响应。

reject(req, allowed_methods, *args, **kwargs)[source]

返回一个 405 方法不允许错误。

为了方便起见,响应中也包含带有已实现方法的“Allow”标头。

class heat.common.wsgi.FilterFactory(conf)[source]

基类: AppFactory

通用的 paste.deploy 过滤器工厂。

这需要将 heat.filter_factory 设置为可调用对象,该对象在被调用时返回一个 WSGI 过滤器。格式为 <模块>:<可调用对象> 例如:

[filter:cache] paste.filter_factory = heat.common.wsgi:filter_factory heat.filter_factory = heat.api.middleware.cache:CacheFilter

WSGI 过滤器构造函数必须接受一个 WSGI 应用、一个 ConfigOpts 对象和一个本地配置字典作为它的三个参数。

KEY = 'heat.filter_factory'
class heat.common.wsgi.JSONRequestDeserializer[source]

基类: object

default(request)[source]
from_json(datastring)[source]
has_body(request)[source]

返回 Webob.Request 对象是否具有实体主体。

参数:

request – Webob.Request 对象

class heat.common.wsgi.Middleware(application)[source]

基类: object

基础 WSGI 中间件包装器。

这些类需要初始化一个将在下一步调用的应用。默认情况下,中间件将简单地调用其包装的应用,或者您可以覆盖 __call__ 以自定义其行为。

process_request(req)[source]

在每个请求上调用。

如果返回 None,则堆栈中下一个应用程序将被执行。如果返回响应,则该响应将被返回,并且执行将在此处停止。

process_response(response)[source]

对响应做任何您想做的事情。

class heat.common.wsgi.Request(environ, charset=None, unicode_errors=None, decode_param_names=None, **kw)[source]

基类: Request

向基础 webob.Request 添加一些 OpenStack API 特定的逻辑。

best_match_content_type()[source]

确定请求的响应内容类型。

best_match_language()[source]

从 Accept-Language 标头确定最佳可用的语言环境。

返回值:

最佳语言匹配或如果请求中没有“Accept-Language”标头,则为 None。

get_content_type(allowed_content_types)[source]

确定请求主体的内容类型。

class heat.common.wsgi.Resource(controller, deserializer, serializer=None)[source]

基类: object

处理 (反)序列化和控制器调度的 WSGI 应用。

读取 RoutesMiddleware 提供的路由信息,并调用反序列化器、控制器和序列化器上的请求操作方法。这三个对象可以实现任何基本控制器操作方法(创建、更新、显示、索引、删除)以及 API 路由器中可能指定的任何方法。还可以实现一个“default”方法,以代替任何未实现的操作。反序列化器方法必须接受一个请求参数并返回一个字典。控制器方法必须接受一个请求参数。此外,它们还必须接受由反序列化器返回的键表示的关键字参数。它们可以引发 webob.exc 异常或返回一个字典,该字典将按请求的内容类型进行序列化。

dispatch(obj, action, *args, **kwargs)[source]

查找 self 上的特定于操作的方法并调用它。

get_action_args(request_environment)[source]

解析 routes 库创建的字典。

class heat.common.wsgi.Router(mapper)[source]

基类: object

WSGI 中间件,用于将传入的请求映射到 WSGI 应用。

heat.common.wsgi.debug_filter(app, conf, **local_conf)[source]
heat.common.wsgi.is_json_content_type(request)[source]
heat.common.wsgi.list_opts()[source]
heat.common.wsgi.log_exception(err, exc_info)[source]
heat.common.wsgi.paste_deploy_app(paste_config_file, app_name, conf)[source]

从 PasteDeploy 配置加载 WSGI 应用。

使用 deploy.loadapp() 从 PasteDeploy 配置加载应用,确保将提供的 ConfigOpts 对象传递给应用和过滤器构造函数。

参数:
  • paste_config_file – PasteDeploy 配置文件

  • app_name – 从文件中加载的应用/管道的名称

  • conf – 要传递给应用及其过滤器的 ConfigOpts 对象

返回值:

WSGI 应用

heat.common.wsgi.setup_paste_factories(conf)[source]

设置通用的 paste 应用和过滤器工厂。

设置内容,以便

paste.app_factory = heat.common.wsgi:app_factory

paste.filter_factory = heat.common.wsgi:filter_factory

在加载 PasteDeploy 配置时正常工作。

应用工厂在运行时构建,以便我们可以将 ConfigOpts 对象传递给 WSGI 类。

参数:

conf – ConfigOpts 对象

heat.common.wsgi.teardown_paste_factories()[source]

反转 setup_paste_factories() 的效果。

heat.common.wsgi.translate_exception(exc, locale)[source]

翻译给定异常的所有可翻译元素。