paste.deploy程序示例

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进行代码流程分析测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大熊1997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值