[原]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应用web

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

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.code

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)
相关文章
相关标签/搜索