首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

paste deploy python ini 配置文件容易说明

2012-12-23 
paste deploy python ini 配置文件简单说明配合 http://www.python.org/dev/peps/pep-0333/http://pythonp

paste deploy python ini 配置文件简单说明
配合 http://www.python.org/dev/peps/pep-0333/
http://pythonpaste.org/deploy/
看下面的example(从网络上改造而来,出处URL也搞忘记的),很快会对python的paste如何组织wsgi有一个简单的了解,

pastedeploylab.ini

[DEFAULT]  key1=value1  key2=value2  key3=values  [composite:pdl]  use=egg:Paste#urlmap  /:root  /calc:calc  [filter:logrequest]  username = root  password = root123  paste.filter_factory = pastedeploylab:LogFilter.factory  [filter:testrequest]  username = admin password = adminpaste.filter_factory = pastedeploylab:TestFilter.factory  [app:calculator]  description = This is an "+-*/" Calculator   paste.app_factory = pastedeploylab:Calculator.factory  [app:showversion]  version = 1.0.0  paste.app_factory = pastedeploylab:ShowVersion.factory  [pipeline:root]  pipeline = logrequest testrequest showversion [pipeline:calc]  pipeline = logrequest calculator


pastedeployed.py

import osimport webobfrom webob import Requestfrom webob import Responsefrom paste.deploy import loadappfrom wsgiref.simple_server import make_server#Filterclass LogFilter():    def __init__(self,app):        self.app = app    def __call__(self,environ,start_response):        print "filter:LogFilter is called."        return self.app(environ,start_response)    @classmethod    def factory(cls, global_conf, **kwargs):        print "in LogFilter.factory", global_conf, kwargs        return LogFilterclass TestFilter():    def __init__(self,app):        self.app = app    def __call__(self,environ,start_response):        print "filter:TestFilter is called."        return self.app(environ,start_response)    @classmethod    def factory(cls, global_conf, **kwargs):        print "in TestFilter.factory", global_conf, kwargs        return TestFilter    class ShowVersion():    def __init__(self):        pass    def __call__(self,environ,start_response):        start_response("200 OK",[("Content-type", "text/plain")])        return ["Paste Deploy LAB: Version = 1.0.0",]    @classmethod    def factory(cls,global_conf,**kwargs):        print         print "in ShowVersion.factory:"        print "global_conf=", global_conf        print "kwargs     =", kwargs        return ShowVersion()class Calculator():    def __init__(self):        pass        def __call__(self,environ,start_response):        req = Request(environ)        res = Response()        res.status = "200 OK"        res.content_type = "text/plain"        # get operands        operator = req.GET.get("operator", None)        operand1 = req.GET.get("operand1", None)        operand2 = req.GET.get("operand2", None)        print req.GET        opnd1 = int(operand1)        opnd2 = int(operand2)        if operator == u'plus':            opnd1 = opnd1 + opnd2        elif operator == u'minus':            opnd1 = opnd1 - opnd2        elif operator == u'star':            opnd1 = opnd1 * opnd2        elif operator == u'slash':            opnd1 = opnd1 / opnd2        res.body = "%s /nRESULT= %d" % (str(req.GET) , opnd1)        return res(environ,start_response)    @classmethod    def factory(cls,global_conf,**kwargs):        print "in Calculator.factory", global_conf, kwargs        return Calculator()if __name__ == '__main__':    configfile="pastedeploylab.ini"    appname="pdl"    wsgi_app = loadapp("config:%s" % os.path.abspath(configfile), appname)    server = make_server('localhost',8989,wsgi_app)  
  server.serve_forever()

热点排行