React 前端导航

Sanic(Python异步Web框架)入门教程

简介

Sanic 是基于 Python 3.5+ 的 异步Web 框架,其特点是快速、简单、高效。

Sanic 使用 asyncio 和 uvloop 库构建,因此它比其他常规 Web 框架要快得多,以其高效的异步处理和简单易用的API而著称。

Sanic 拥有强大的路由系统,可以快速创建 RESTful API。同时还支持处理请求的中间件,可以对请求进行预处理或修改响应。

Sanic 支持使用蓝图组织视图,可以将视图分成不同模块,以提高代码可读性和维护性。

使用教程

下面是使用Sanic搭建的一个包含views、models目录、使用蓝图创建路由以及使用MySQL数据库的后端的示例代码:

1. 安装库

pip install sanic
pip install aiomysql

2.项目根目录创建 app.py 文件

from sanic import Sanic
from sanic.response import json
from sanic_blueprints import Blueprint
from aiomysql.sa import create_engine
app = Sanic()
# 创建蓝图
bp = Blueprint("users", url_prefix="/users")
# 数据库配置
db_config = {
    "host": "localhost",
    "user": "root",
    "password": "root",
    "db": "test"
}
# 创建数据库引擎
async def create_db_engine():
    engine = await create_engine(
        host=db_config["host"],
        user=db_config["user"],
        password=db_config["password"],
        db=db_config["db"],
    )
    return engine
# 数据库模型
async def get_user_by_id(user_id):
    async with create_db_engine().acquire() as conn:
        async with conn.execute(select([users]).where(users.c.id==user_id)) as result:
            return await result.fetchone()
# 视图函数
@bp.route("/<user_id>")
async def get_user(request, user_id):
    user = await get_user_by_id(user_id)
    return json({"user": user})
# 注册蓝图
app.blueprint(bp)
if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

3.项目根目录下创建models目录

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
# 定义模型
class User(Base):
    __tablename__ = "user"
    id = Column(Integer, primary_key=True)
    name = Column(String(255))
    age = Column(Integer)
# 初始化数据库
engine = create_engine("mysql://root:root@localhost/test")
Base.metadata.create_all(engine)

4.项目根目录下创建views目录

在 views 目录中,我们可以将所有的视图函数放置在一个单独的文件中,例如 users.py:

from sanic.response import json
from sanic_blueprints import Blueprint
from models import User, get_user_by_id
bp = Blueprint("users", url_prefix="/users")
@bp.route("/<user_id>")
async def get_user(request, user_id):
    user = await get_user_by_id(user_id)
    return json({"user": user})

最后,在 app.py 文件中引入 users 视图:

from views import users
# 注册蓝图
app.blueprint(users.bp)

运行 app.py 文件,就可以在浏览器中访问 http://localhost:8000/users/1,并获得一个 JSON 格式的用户信息响应。

小结

Sanic还提供了许多有用的功能,例如WebSocket支持、CORS支持、蓝图、静态文件服务等等。Sanic的文档也非常详细,对新手来说是一个不错的资源。

总的来说,Sanic 是一个快速、易用、可扩展的 Web 框架,非常适合用于构建 RESTful API 和快速原型开发,如果你正在寻找一种快速、轻量级的Python异步Web框架,那么Sanic值得一试。

声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。邮箱:farmerlzj@163.com。 本站原创内容未经允许不得转载,或转载时需注明出处: 内容转载自: React前端网:https://qianduan.shop/blogs/detail/182
想做或者在做副业的朋友欢迎加微信交流:farmerlzj,公众号:生财空间站。

#sanic#python#web

相关推荐

钉钉小程序 webview 在ios上白屏问题

项目中需要做pdf的附件预览,调研了下钉钉小程序实现附件预览可以借助钉盘实现,即先将附件上传到盯盘,再利用钉盘实现附件预览,这种实现方式过于繁琐,其中还涉及到了钉盘的管理(权限,空间等),所以我们这里利用内嵌h5页面的方式去实现对应的pdf附件预览。

webContainer - 在浏览器运行 node 代码

WebContainers 是一个基于浏览器的运行时,用于执行 Node.js 应用程序和操作系统命令,它完全运行在您的浏览器页面中.