您的位置:首页 > 编程语言 > Python开发

paste deploy python ini 配置文件简单说明

2013-03-26 17:06 351 查看
转自:http://pypy.iteye.com/blog/1740122
配合http://www.python.org/dev/peps/pep-0333/

http://pythonpaste.org/deploy/

看下面的example(从网络上改造而来,出处URL也搞忘记的),很快会对python的paste如何组织wsgi有一个简单的了解,

pastedeploylab.ini

Python代码

[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=admin
paste.filter_factory=pastedeploylab:TestFilter.factory

[app:calculator]
description=Thisisan"+-*/"Calculator
paste.app_factory=pastedeploylab:Calculator.factory

[app:showversion]
version=1.0.0
paste.app_factory=pastedeploylab:ShowVersion.factory

[pipeline:root]
pipeline=logrequesttestrequestshowversion
[pipeline:calc]
pipeline=logrequestcalculator


pastedeployed.py

importos
importwebob
fromwebobimportRequest
fromwebobimportResponse
frompaste.deployimportloadapp
fromwsgiref.simple_serverimportmake_server

#Filter
classLogFilter():
def__init__(self,app):
self.app=app

def__call__(self,environ,start_response):
print"filter:LogFilteriscalled."
returnself.app(environ,start_response)

@classmethod
deffactory(cls,global_conf,**kwargs):
print"inLogFilter.factory",global_conf,kwargs
returnLogFilter

classTestFilter():
def__init__(self,app):
self.app=app

def__call__(self,environ,start_response):
print"filter:TestFilteriscalled."
returnself.app(environ,start_response)

@classmethod
deffactory(cls,global_conf,**kwargs):
print"inTestFilter.factory",global_conf,kwargs
returnTestFilter

classShowVersion():
def__init__(self):
pass

def__call__(self,environ,start_response):
start_response("200OK",[("Content-type","text/plain")])
return["PasteDeployLAB:Version=1.0.0",]

@classmethod
deffactory(cls,global_conf,**kwargs):
print
print"inShowVersion.factory:"
print"global_conf=",global_conf
print"kwargs=",kwargs
returnShowVersion()

classCalculator():
def__init__(self):
pass

def__call__(self,environ,start_response):
req=Request(environ)
res=Response()
res.status="200OK"
res.content_type="text/plain"
#getoperands
operator=req.GET.get("operator",None)
operand1=req.GET.get("operand1",None)
operand2=req.GET.get("operand2",None)
printreq.GET
opnd1=int(operand1)
opnd2=int(operand2)
ifoperator==u'plus':
opnd1=opnd1+opnd2
elifoperator==u'minus':
opnd1=opnd1-opnd2
elifoperator==u'star':
opnd1=opnd1*opnd2
elifoperator==u'slash':
opnd1=opnd1/opnd2
res.body="%s/nRESULT=%d"%(str(req.GET),opnd1)
returnres(environ,start_response)
@classmethod
deffactory(cls,global_conf,**kwargs):
print"inCalculator.factory",global_conf,kwargs
returnCalculator()

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: