介绍 —— 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

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,就可以看到输出结果。

初学Sanic框架_Sanic_02

代码解析:

 (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服务。