[原]Paste.deploy 与 WSGI, keystone 小记

Paste.deploy 与 WSGI, keystone 小记

名词解释:

  • Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来.
  • keystone 是 openstack的各模块之间调用时候采取的认证,主要方式是在WSGI接口下增加filter,对调用者做身份验证.

Paste.deploy 详细介绍:

  • paste.deploy 通过 loadapp(configPath)来启动WSGI应用, 其中configPath 包含了对应WSGI应用的信息

  • 在config File中有对应如下配置,用于启动对应WSGI应用

      [app:app_name]
    paste.app_factory = yourproject.web:app_factory
  • app_factory会返回一个application的callable object, 此cb接受WSGI标准的两个参数:

    class application():
def __init__(self):
pass
def __call__(self,environ, start_response):
start_response("200 OK",[("Content-type", "text/plain")])
return ["Paste Deploy LAB",] envrion # 环境信息
start_response # 回调
  • app_factory是一个callable object,接收 global_conf, **kwargs两个参数(配置信息)

  • 在paste.deploy 中配置 filter, 可以让WSGI应用在调用前被hook,先调用filter的对象.

      filter:authtoken
    paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory
  • filter_factory与app_factory 一样,接收配置参数,并返回一个 callable object, 此cb 会在每次调用 WSGI app时候调用,keystone也就是在这里对API的认证做了hook.

     class Filter():
def __init__(self,app):
self.app = app
pass def __call__(self,environ,start_response):
print "filter hook here."
return self.app(environ,start_response)
上一篇:A Simple OpenGL Shader Example


下一篇:Opencv读取图片像素值并保存为txt文件