@wsgify装饰器

Webob中针对WSGI接口设计了@wsgi装饰器,简化程序的书写,作用就是将一个函数转换成一个WSGI应用。

wsgify

class webob.dec.wsgify(func=None, RequestClass=None, args=(), kwargs=None, middleware_wraps=None)<span style="font-family: SimSun; background-color: rgb(255, 255, 255);"> </span>

将一个request实例对象作为输入,response作为输出的函数wrap包装成一个WSGI应用。

用法如下:

(1)、

@wsgify
def myfunc(req):
    return webob.Response('hey there')

经过装饰后,函数myfunc作为一个WSGI应用,有两种调用方式:
app_iter = myfunc(environ, start_response)
resp = myfunc(req)

如果处理中触发了webob.exc异常,异常信息会传入Response中。


(2)、
装饰器还可以自定义,一般通过一个subrequest来实现,如下:

class MyRequest(webob.Request):  #python中的继承,子类继承Request类
    @property                    #只读
    def is_local(self):     
        return self.remote_addr == '127.0.0.1'

@wsgify(RequestClass=MyRequest)
def myfunc(req):
    if req.is_local:
        return Response('hi!')
    else:
        raise webob.exc.HTTPForbidden

可以看到,经过这种方式,我们在整个WSGI中增加了request中一些自定义内容的处理。

可能不是很完整,但是够用就可以了。等后面用到其他的,再来补充。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值