Python Web框架Sanic框架初识

发表时间:2020-02-18

Sanic 既是一个Python web 服务器,又是一个web框架,它为速度而生。Sanic只支持Python 3.5及其以上版本,允许我们使用 async/await 语法来使我们的代码非阻塞且快速。

初识sanic

通过pip安装Sanic

pip3 install sanic

Sanic 使用 uvloop ujson 来提高性能。但是,目前Windows上不支持 uvloop ,只能使用 asnycio 原生的事件循环。不过不影响你在Windows上使用Sanic,不用担心这个问题,如果想深入了解 它就去看看Sanic的源码中 server.py worker.py 。其实,就是在代码中 import uvloop 时处理了 ImportError 异常。

如果你不喜欢这两个包,可以通过设置环境变量 SANIC_NO_UVLOOP=true SANIC_NO_UJSON=true 来禁止安装它们。

$ export SANIC_NO_UVLOOP=true
$ export SANIC_NO_UJSON=true
$ pip3 install sanic

Sanic简单示例

sanic 介绍

下面是一个最简单的Sanic web 应用,写入文件 app-simple.py

# file: app-simple.py
from sanic import Sanic
from sanic.response import json

app = Sanic()

@app.route('/')
async def test(request):
    msg = {'message': 'Welcom to 猿人学Python'}
    return json(msg, ensure_ascii=False)

if __name__ == '__main__':
    app.run(host='127.0.0.1', port=8888)

在命令行下运行这个web app:

python3 app-simple.py

运行成功可以看到如下输出:

[2019-03-21 21:29:57 +0800] [10766] [INFO] Goin' Fast @ http://127.0.0.1:8888
[2019-03-21 21:29:57 +0800] [10766] [INFO] Starting worker [10766]

用浏览器或 curl 访问 http://127.0.0.1:8888 ,就可以看到输出结果。下面是命令 curl -i http://127.0.0.1:8888 的结果:

HTTP/1.1 200 OK
Connection: keep-alive
Keep-Alive: 5
Content-Length: 39
Content-Type: application/json

{"message":"Welcom to 猿人学Python"}

Sanic示例详解

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

使用Sanic开发web应用的过程就是这么简单。如果开发复杂的网站,就是不断重复第三步,并使用 blueprint 来使代码结构更清晰。后面,我们将一一介绍使用Sanic开发网站的方方面面。你准备好了吗,让我们一起开启Sanic开发之旅吧!

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号-4
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free