[原]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)
相關文章
相關標籤/搜索