资讯专栏INFORMATION COLUMN

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

clasnake / 3120人阅读

摘要:在类似的基础上,支持异步请求处理,也就是说,你可以使用中全新而又亮眼的语法,使你的代码非阻塞且快速。就是基于实现的异步读写的数据库模块,同样有模块为因一波封装了,使得读写更加方便,它就是

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43428.html

相关文章

  • Sanic教程:快速开始

    摘要:快速开始在安装之前在支持异步的过程中,都经历了哪些比较重大的更新。踏出第一步我们将正式使用来构建一个项目,让我们踏出第一步,利用来编写一个返回字符串的服务程序。本次示例的源代码全部在上,见。 快速开始 在安装Sanic之前,让我们一起来看看Python在支持异步的过程中,都经历了哪些比较重大的更新。 首先是Python3.4版本引入了asyncio,这让Python有了支持异步IO的标...

    warmcheng 评论0 收藏0
  • python 最快 web 框架 Sanci 快速入门

    摘要:详细信息可以看下这个问题先在说下我的部署方式使用部署配置文件启动方式总结试用了下,把之前的一个聊天机器人从改成了。预告下一篇将介绍如何使用一步一步创建一个聊天机器人。 简介 Sanic 是一个和类Flask 的基于Python3.5+的web框架,它编写的代码速度特别快。除了像Flask 以外,Sanic 还支持以异步请求的方式处理请求。这意味着你可以使用新的 async/await ...

    snifes 评论0 收藏0
  • sanic异步框架之中文文档

    摘要:实例实例测试结果增加路由实例测试结果提供了一个方法,根据处理程序方法名生成。异常抛出异常要抛出异常,只需从异常模块中提出相应的异常。 typora-copy-images-to: ipic [TOC] 快速开始 在安装Sanic之前,让我们一起来看看Python在支持异步的过程中,都经历了哪些比较重大的更新。 首先是Python3.4版本引入了asyncio,这让Python有了支...

    elliott_hu 评论0 收藏0
  • 微信公号DIY:一小时搭建微信聊天机器人

    摘要:最近借用了女朋友的公号,感觉如果只是用来发文章,太浪费微信给提供的这些功能了。想了想,先从最简单的开始,做一个聊天机器人吧。是一款接口的,基于一系列规则和机器学习算法完成的聊天机器人。 最近借用了女朋友的公号,感觉如果只是用来发文章,太浪费微信给提供的这些功能了。想了想,先从最简单的开始,做一个聊天机器人吧。 使用Python实现聊天机器人的方案有多种:AIML、chatterBot以...

    source 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<