Sanic框架之捕获异常

前言

学习如何在Sanic中用修饰器捕获异常

使用

以往,我们捕获异常通常都是这样

from sanic import Sanic
from sanic.response import text
from functools import wraps

app = Sanic(__name__)

def fuc(f):
    @wraps(f)
    def a(request,*args,**kwargs):
        try:
            name = request.json
            result =  f(request, *args, **kwargs)
        except Exception as e:
            print('aaa')
            print(e)

        return f(request, *args, **kwargs)
    return a

@app.route('/',strict_slashes=True)
@fuc
def index(request):
    name = request.json
    print(name['test'])
    return text('This is Test !')

if __name__ == '__main__':   
    app.run(debug=True)

这种就比较常见,不使用异步来获取,但是当你的程序需要用异步来捕获的时候,这个时候原有的代码就无法捕获

因为** asyncio中都是通过future的exception来传递异常** 所以,代码呼之欲出

from sanic import Sanic
from sanic.response import text
from functools import wraps

app = Sanic(__name__)

def fuc(f):
    @wraps(f)
    async def a(request,*args,**kwargs):
        try:
            name = request.json
            result =  await f(request, *args, **kwargs)
        except Exception as e:
            print('aaa')
            print(e)

        return f(request, *args, **kwargs)
    return a



@app.route('/',strict_slashes=True)
@fuc
async def index(request):
    name = request.json
    print(name['test'])
    return text('This is Test !')

if __name__ == '__main__':
    app.run(debug=True)

通过使用async 以及await 的方式就能够接受到异常了

转载于:https://my.oschina.net/u/2333235/blog/1527098

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值