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

配合 [url]http://www.python.org/dev/peps/pep-0333/[/url]
[url]http://pythonpaste.org/deploy/[/url]
看下面的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 = 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


pastedeployed.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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值