异步处理的框架Sanic的使用方法和小技巧
Sanic是异步处理的框架,运用Sanic可以开发快速异步响应的web程序。想必大家看到这个都会比较期待和兴奋。
那么如何使用Sanic来实现快速响应呢?我们先来看一看Sanic的基本介绍。

Sanic类似Flask、只支持Python 3.5+ 版本的web 服务器,运行速度更快。在类似Flask的基础上,Sanic支持异步请求处理,你可以使用Python 3.5 中全新而又亮眼的 async/await 语法,使你的代码快速。
下面是一个最简单的Sanic Web 程序:
from sanic import Sanic
from sanic.response import json app = Sanic() @app.route("/")
async def test(request):
return json({"hello": "world"}) if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
以上代码显示了Sanic的基本用法:
- 全局生成一个Sanic对象:app = Sanic()
- Web路由由装饰器@app.route()管理,也可以通过url_for()、add_route()指定(详见文档)
- 请求响应函数用async声明进行异步处理,输入必须有request对象,返回response对象
什么时候使用Blueprint?
如果网站很复杂,路由路径很多,全部写在一个文件里面会比较复杂,这时候可以使用Blueprint,把不同功能写到不同blueprint文件里面,让整个代码结构逻辑更清晰
Class-Based Views
如果你用过tornado,一定对它用类处理请求的方式印象深刻,对同一个路由路径分别处理GET、POST、DETET等请求方式时,只要实现该类的几个不同方法即可,让整个代码的逻辑结构更清晰。同样,Sanic也提供了基于类的处理方式: HTTPMethodView
Jinja网页模板强大功能
Jinja具有快速强大的html模板渲染能力,是很多Python Web框架首选的html模板处理器。Sanic没有实现自己的模板处理,但可以把Jinja融入进来: sanic_jinja2
i18n国际化处理
Web网站经常要同时支持多种语言,这个时候就要遇到国际化处理的问题,这方便也有模块把Babel集成进来: sanic_babel
小技巧:
你针对路由路径 ‘/product’ 写了Blueprint bp_product, 但要支持en, zh, jp三种语言路径,即: /en/product, /zh/product, /jp/product, 你该怎么做呢?
在一个循环里为每种语言注册该路径:
for lang in ['en', 'zh', 'jp']:
app.blueprint(bp_product, url_prefix='/%s' % lang)
MySQL读写
Sanic是异步处理的框架,读写数据库MySQL当然也要用异步IO的方式,才能体系异步的高效。aiomysql就是基于pymysql实现的异步读写MySQL的数据库模块,同样有模块为sanic因一波封装了aiomysql,使得MySQL读写更加方便,它就是: sanicdb
看完是不是觉得很厉害的样子,头脑有没有灵光闪显的感jio?
文章首发于我的技术博客猿人学Python基础教程
异步处理的框架Sanic的使用方法和小技巧的更多相关文章
- Android Snackbar使用方法及小技巧-design
Snackbar和Toast相似,都是为了给用户提供交互信息,Snackbar是固定在底部的,显示时从下往上滑出 要使用Snackbar,需要在项目的build.gradle中添加依赖 depende ...
- 一个查看UI5控件所有公有方法的小技巧
一个很小的tip:比如我想把UI5表格控件里的每列设置成宽度根据显示的内容自适应,需要知道应该调用控件的哪个方法来实现. 一种办法当然是查SAP帮助文档,得知需要调用控件的公有方法setAutoSiz ...
- 关于jQuery的append()和prepend()方法的小技巧
最近工作上有个需求是要求一个自动向上滚动的列表,表有很多行,但只显示一行,每次滚动一行.很简单的一个功能,代码如下 <div class="scroll-area"> ...
- 【UE4 调试】C++ 几种编译方法和小技巧
编译方法 Visual Studio 2019 编译 默认编译 UnrealVS 快速编译 Editor 编译 一般 vs 编译完后,Editor会跟着热编译(有声音) 如果发现编译后代码没更新到Ed ...
- PHP 小技巧之__callStatic魔术方法使用
使用 PHP 框架时,经常会用到 ORM 模型查询数据库,有没有疑问:为啥有些 ORM 中的静态查询方法,不能通过函数追踪下去呢,很有可能就是使用了 __callStatic 魔术方法的小技巧 这里贴 ...
- python 异步Web框架sanic
我们继续学习Python异步编程,这里将介绍异步Web框架sanic,为什么不是tornado?从框架的易用性来说,Flask要远远比tornado简单,可惜flask不支持异步,而sanic就是类似 ...
- 可扩展多线程异步Socket服务器框架EMTASS 2.0 (转自:http://blog.csdn.net/hulihui)
可扩展多线程异步Socket服务器框架EMTASS 2.0 (转自:http://blog.csdn.net/hulihui) 0 前言 >>[前言].[第1节].[第2节].[第3节]. ...
- android 异步加载框架 原理完全解析
一.手写异步加载框架MyAsycnTask(核心原理) 1.我为大家手写了一个异步加载框架,涵盖了异步加载框架核心原理. MyAsycnTask.java import android.os.Hand ...
- struts2.5框架使用通配符指定方法常见错误
struts2.5框架使用通配符指定方法(常见错误) 在学习struts框架时经常会使用到通配符调用方法,如下: <package name="shop" namespace ...
随机推荐
- python 操作mysql数据库(mac)包括如何处理安装MySQL-python
一.数据库的安装,https://www.jianshu.com/p/fd3aae701db9 https://jingyan.baidu.com/article/fa4125ac0e3c2 ...
- Spark On YARN启动流程源码分析(一)
本文主要参考: a. https://www.cnblogs.com/yy3b2007com/p/10934090.html 0. 说明 a. 关于spark源码会不定期的更新与补充 b. 对于spa ...
- [Paper Reading] Show and Tell: A Neural Image Caption Generator
论文链接:https://arxiv.org/pdf/1411.4555.pdf 代码链接:https://github.com/karpathy/neuraltalk & https://g ...
- 学习Yii(2)
Yii拥有很好的手册,还是中文的,官方的手册很详细.还是应该好好看一下.今天就开始跟着项目代码调试. 上次看到入口脚本,学习一定要快,要用心,抓住时间.不然时间拖久了就忘了.延续不上,大打折扣.而且要 ...
- [转帖]Linux-Windows 端口转发 netsh 还有 rinetd
Linux-Windows 端口转发 https://www.cnblogs.com/operationhome/p/11284559.html 之前自己学习过 netsh 也曾经用过frp 这次学习 ...
- javaSE总结(一)-java数据类型和运算符
一.注释 (1)单行注释: // (2)多行注释:/* */ (3)文档注释:/** */ 二.标识符和关键字 (1)分隔符:分号; 花括号{} 方括号[] 圆括号() 空格 圆点(.) ...
- Ubuntu18.04中安装Python3.7教程
Ubuntu18.04中安装Python3.7教程 链接https://blog.csdn.net/weixin_42056625/article/details/82970358
- PID程序实现
传统PID(位置式PID控制)调节: 这种算法的缺点是,由于全量输出,每次输出均与过去的状态有关,计算时要对 e(k) 进行累加,计算机运算工作量大.而且,因为计算机输出的 u(k) 对应的是执行机构 ...
- 织梦DedeCMS给栏目添加缩略图调用的方法
织梦DedeCMS的栏目调用仅仅只有文字调用,没有栏目缩略图调用,而我们有时候又需要给栏目添加缩略图,并能够在前台调用,就可以试试通过下面的方法,给栏目添加缩略图. 首先要给栏目数据库表添加一个存储缩 ...
- 第10章:深入浅出Ansible
1.Ansible介绍 1).Ansible的优点 Ansible是一个简单的自动化引擎,可完成配置管理.引用部署.服务编排以及其他各种IT需求 Ansible是Python开发并实现的开源软件,其依 ...