文档章节

Sanic框架之捕获异常

FenG_Vnc
 FenG_Vnc
发布于 2017/08/31 17:33
字数 290
阅读 53
收藏 0

前言

学习如何在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 的方式就能够接受到异常了

© 著作权归作者所有

FenG_Vnc
粉丝 11
博文 24
码字总数 11100
作品 0
深圳
其他
私信 提问
Python web 框架Sanic 学习: 自定义 Exception

是一个和类Flask 的基于Python3.5+的web框架,它使用了 Python3 异步特性,有远超 flask 的性能。 编写 RESTful API 的时候,我们会定义特定的异常错误类型,比如我定义的错误返回值格式为:...

goodspeed
2017/08/05
0
0
最快的 Python Web 框架入门

摘要:sanic是一款用 python3.5+ 写的 web framework,用法和 flask 类似,特点是非常快 。Github 地址:https://github.com/channelcat/sanic 速度比较 安装 环境:python3.5+ python -m pi...

Prasanta
2017/12/14
0
0
SanicDB:简化 Python 异步 Web 框架 Sanic 操作 MySQL

SanicDB 是为 Python 的异步 Web 框架 Sanic 方便操作 MySQL 而开发的工具,是对 aiomysql.Pool 的轻量级封装。Sanic 是异步IO的Web框架,同时用异步IO读写MySQL才能更大发挥它的效率。虽然这...

呆木木人儿
2019/03/19
1K
1
基于sanic打造python web框架

版权声明:本文为Doctorq原创文章,未经博主允许不得转载。 https://blog.csdn.net/qhshiniba/article/details/88244732 0x00 Why 为何做这件事,在去年的一个项目中,算法同学要使用在线模型...

Q博士
2019/03/06
0
0
使用Sanic开发快速异步响应的Web程序

python学习笔记整理于猿人学网站的python教程和python爬虫 Sanic是一个类似Flask、仅仅支持Python 3.5+ 版本的web 服务器,旨在运行速度更快。在类似Flask的基础上,Sanic支持异步请求处理,...

呆木木人儿
2019/03/05
259
0

没有更多内容

加载失败,请刷新页面

加载更多

获取map()以在Python 3.x中返回列表

我正在尝试将列表映射为十六进制,然后在其他地方使用该列表。 在python 2.6中,这很简单: 答: Python 2.6: >>> map(chr, [66, 53, 0, 94])['B', '5', '\x00', '^'] 但是,在Python 3.......

技术盛宴
12分钟前
4
0
基于TI达芬奇系列TMS320DM8148浮点DSP C674xBOOT SET启动选择开关、Micro SD接口

说明 由广州创龙设计的SOM-TL8148和SOM-TL8127核心板是Pin To Pin兼容,两款核心板公用同一块底板。DM8148与DM8127相比,DM8148有SATA接口,DM8127没有SATA接口;而DM8127有CSI2接口,DM814...

Tronlong创龙
15分钟前
4
0
产品经理如何有效进行需求管理?

需求是整个软件项目当中最重要一项输入。软件开发和传统生产行业最大的区别在于,需求总是模糊的、主观的和随时变化的。相对于电子产品、汽车等制造行业有形的硬件需求,软件开发的需求的描述...

Worktile
29分钟前
2
0
Python 判断变量是否是 None 的三种写法

代码中经常会有变量是否为None的判断,有三种主要的写法: 第一种是if x is None; 第二种是 if not x:; 第三种是if not x is None(这句这样理解更清晰if not (x is None)) 。 如果你觉得...

每天学Python
32分钟前
2
0
springboot初探——启动流程

前面已经介绍一下springboot,本篇开始介绍springboot在启动过程中做了什么,凭什么那么少的代码就能完成一个web项目。 其他的我们可以先不管,先来看一眼springboot的main方法 @SpringBootA...

计算机狼
50分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部