介绍 —— Sanic是什么?
Sanic 是 Python3.7+ Web 服务器和 Web 框架,旨在提高性能。它允许使用 Python3.5 中添加的 async
/await
语法,这使得代码可以有效的避免阻塞,从而达到提升响应速度的目的。
Sanic不仅是一个框架,还是一个web服务器。Sanic具备开箱即用的功能,它可以用于编写、部署和扩展生产级web应用程序。
说实话,上边这句话是我在网上看到的,大家都这么说,虽然我并不是很理解,但是请跟我一起开启学习Sanic之路吧~
通过pip安装sanic
pip install sanic -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
Sanic入门
Sanic使用asyncio库来实现异步请求处理,这使得它可以处理大量并发请求,而不会阻塞应用程序的主线程。
Sanic 的主要特点
- 快速的响应速度:由于使用异步编程,Sanic 可以处理大量并发请求,并提供更快的响应速度。
- Flask 风格的 API:Sanic 的 API 类似于 Flask,这使得它易于学习和使用。
- WebSocket 支持:Sanic 支持 WebSocket,这使得它可以轻松地构建实时应用程序。
- 路由支持:Sanic 提供了路由支持,可以轻松地定义 URL 和处理程序之间的映射关系。
- 中间件支持:Sanic 支持中间件,可以在请求处理过程中添加额外的功能和逻辑。
哈哈哈
Sanic 的简单应用
将下述代码写入文件zdm-test.py
:
from sanic import Sanic
from sanic.response import json
app = Sanic()
@app.route('/')
async def zdm_test(request):
msg = {'message': '请叫我可爱的小张同学'}
return json(msg, ensure_ascii=False)
if __name__ == '__main__':
app.run(host='127.0.0.1', port=8888)
程序执行:
在命令行下运行这个web app:
python zdm_test.py
当你看到Starting worker,则说明运行成功:
[2023-07-18 14:49:42 +0800] [13624] [INFO] Sanic v23.3.0
[2023-07-18 14:49:42 +0800] [13624] [INFO] Goin' Fast @ http://127.0.0.1:8080
[2023-07-18 14:49:42 +0800] [13624] [INFO] mode: production, single worker
[2023-07-18 14:49:42 +0800] [13624] [INFO] server: sanic, HTTP/1.1
[2023-07-18 14:49:42 +0800] [13624] [INFO] python: 3.7.16
[2023-07-18 14:49:42 +0800] [13624] [INFO] platform: Windows-10-10.0.19041-SP0
[2023-07-18 14:49:42 +0800] [13624] [INFO] packages: sanic-routing==22.8.0
[2023-07-18 14:49:43 +0800] [20016] [INFO] Starting worker [20016]
用浏览器访问http://127.0.0.1:8080
,就可以看到输出结果。
代码解析:
(1) 首先,从sanic
包导入Sanic
类,这个是一个Sanic web app (web应用)的入口类。根据我们app的响应数据类型从sanic.response
导入相应的响应函数,比如本例中的json()
。
(2)接着,生成一个Sanic
的实例app
。
(3)实例app
有两个最常用的方法app.route()
和app.run()
。app.route()
是一个装饰器,通过它定义我们app的访问路径(路由),比如本例中的test()
函数就是用来响应根路径:/
。
通过@app.route()
可以定义整个web app的各种路由。
(4)最后,通过app.run()
方法来运行app,开启一个web服务。