使用Sanic开发快速异步响应的Web程序

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Sanic是一个类似Flask、仅仅支持Python 3.5+ 版本的web 服务器,旨在运行速度更快。在类似Flask的基础上,Sanic支持异步请求处理,也就是说,你可以使用Python 3.5 中全新而又亮眼的 async/await 语法,使你的代码非阻塞且快速。

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

文章首发于我的技术博客:www.yuanrenxue.com

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
13天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
24天前
|
Web App开发 前端开发 开发工具
介绍Web开发的基础知识
介绍Web开发的基础知识
26 7
|
2天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
2天前
|
前端开发 数据挖掘 API
使用Python中的Flask框架进行Web应用开发
【4月更文挑战第15天】在Python的Web开发领域,Flask是一个备受欢迎的轻量级Web框架。它简洁、灵活且易于扩展,使得开发者能够快速地构建出高质量的Web应用。本文将深入探讨Flask框架的核心特性、使用方法以及在实际开发中的应用。
|
14天前
|
XML JSON JavaScript
使用JSON和XML:数据交换格式在Java Web开发中的应用
【4月更文挑战第3天】本文比较了JSON和XML在Java Web开发中的应用。JSON是一种轻量级、易读的数据交换格式,适合快速解析和节省空间,常用于API和Web服务。XML则提供更强的灵活性和数据描述能力,适合复杂数据结构。Java有Jackson和Gson等库处理JSON,JAXB和DOM/SAX处理XML。选择格式需根据应用场景和需求。
|
24天前
|
API
2024常用Web支付开发讲解教程
本教程为web支付开发,讲解了最常用的两钟支付:支付宝支付和微信支付,服务器配置和API对接,学完本课程可以学会微信支付、和支付宝支付开发。
17 2
2024常用Web支付开发讲解教程
|
27天前
|
JSON JavaScript 前端开发
移动WEB特效开发
移动WEB特效开发
13 0
|
1月前
|
存储 资源调度 应用服务中间件
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
24 0
|
1月前
|
存储 前端开发 JavaScript
从前端到后端,探索现代Web开发技术
本文探索了现代Web开发技术的各个方面,包括前端和后端开发以及多种编程语言的应用。通过对JavaScript、Java、Python、C、PHP和Go等语言的介绍,深入探讨了前端和后端开发的基本原理和常用工具。同时,还涵盖了数据库技术在Web开发中的重要性和应用场景。无论你是初学者还是有经验的开发者,本文都能为你提供全面的视角和实用的知识,帮助你在Web开发领域取得更好的成果。