Sanic,一个快如闪电的异步 Python Web 框架

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。

本篇文章将详细介绍 Python 高性能 Web 异步框架 Sanic 的各功能,并通过实战将爬虫(Spiders)模块+视图(Views)模块+路由(Routers)模块+模型(Models)模块结合形成一个各模块独立、高性能、可读性高、可扩展性高、具有精美的接口文档、易于后期维护的爬虫 API 项目,并部署在 Ubuntu 服务器上供团队调用。

目录

一、Sanic 简介及特性

说到 Python Web 框架, 你可能会想到 Flask、Django、Tornado、FastAPI这些;而本文将向大家介绍另一个 Python Web 框架 —— Sanic。

它是一个 Python 3.8+ Web 服务器和 Web 框架,旨在快速运行。它允许使用 Python 3.5 中添加的 async/await 语法,这使您的代码非阻塞且快速。

应用场景
如果你希望快速搭建一个小型的 API 项目,又对速度有非常大的需求,那 Sanic 无疑是你的天选框架,很哇塞的哟!

Sanic 特性

  • 直接支持生产环境部署
  • 高度可扩展
  • 内置快速网络服务器
  • 具有异步支持
  • 使用 Redoc、Swagger 的 OpenAPI 文档
  • CORS 保护等

Sanic 安装

pip install sanic -i https://pypi.doubanio.com/simple

默认安装最新版,也可指定你需要的版本

二、Sanic 各功能测试

快速上手
先来快速构建一个简单的 Python Web 应用:

from sanic import Sanic
from sanic.response import json
from datetime import datetime
import multiprocessing

app = Sanic("SanicAPP")
HOST = "localhost"
PORT = 7777

app.config.FALLBACK_ERROR_FORMAT = 'json'
app.config.ACCESS_LOG = True

async def get_datetime():
    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")

@app.route('/getdatetime')
async def getdatetime(request):
    return json({"now": await get_datetime(), 'server_name': request.server_name, 'path': request.path})


if __name__ == "__main__":
    app.run(host=HOST, port=PORT, debug=False, auto_reload=True, workers=multiprocessing.cpu_count() // 5)

于生产环境启动运行:
在这里插入图片描述

该程序创建了一个可以访问当前时间的接口,并且使用异步支持,程序处理速度会更快,还进行了一些全局配置:开启访问日志、开启自动重载、CPU 工作数量为当前系统的 1/5(CPU 数量设置越多,并发处理速度越快)、将 404 页面以 json 格式返回等

访问成功示例:
在这里插入图片描述

访问失败示例:
在这里插入图片描述

访问日志:
在这里插入图片描述

FBV 模式
其意为“基于函数的视图”(Function-based View),尽管从个人角度来说此模式可能不太利于后期开发,可读性也不太好,但还是需要学习一下的:

from query_tag import Query

q = Query()

async def request_parse(reque
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值