[原]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)
文章属原创,转载请注明出处
联系作者: Email:zhangbolinux@sina.com
QQ:513364476