在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 # 回调
在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)