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 = admin
paste.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
pastedeploylab.py:
import os
import webob
from webob import Request
from webob import Response
from paste.deploy import loadapp
from wsgiref.simple_server import make_server
#Filter
class 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 LogFilter
class 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()
然后在浏览器输入:
http://localhost:8989/calc?operator=plus&operand1=102&operand2=201进行代码流程分析测试
paste.deploy程序示例
最新推荐文章于 2024-05-26 19:37:28 发布