zoukankan      html  css  js  c++  java
  • [原]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)
    
  • 相关阅读:
    Python基础23_os,sys,序列化,pickle,json
    Python基础22_模块,collections,time,random,functools
    Python基础21_类与类型, MRO, C3算法, super()
    Python基础20_类的约束,异常处理,MD5加密,日志
    python反射机制
    python 依赖关系 与关联关系
    python 类的常见的特殊成员
    类的成员(*变量与*方法)
    初识面向对象
    简说匿名函数与递归
  • 原文地址:https://www.cnblogs.com/Bozh/p/3954382.html
Copyright © 2011-2022 走看看