[原]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)
posted @ 2014-09-03 18:59  _Boz  阅读(1972)  评论(1编辑  收藏  举报
4AI?Z:cp1z?_RJQle1]Gs;P!T)RHroW|