Sanic快速入门(详细,全面,通俗易懂)

2024-08-26 17:04

本文主要是介绍Sanic快速入门(详细,全面,通俗易懂),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是sanic

官网介绍:Sanic是一个Python 3.8+web服务器和web框架,旨在快速运行。它允许使用Python 3.5中添加的async/await语法,这使得您的代码无阻塞且快速

Sanic最早由ChannelCat团队开发,旨在提供一个高性能的异步Web框架。其灵感来自于Flask,并在异步编程的基础上进行了优化。Sanic利用Python3.5引入的async/await语法,使得开发者可以编写快速且高效的异步Web应用程序

简单来说,sanic是内置了服务器的web框架,这和java中的spring boot框架有点像。

官网地址:https://sanic.dev

python的web对比

python的web框架种类众多,但使用率最高的主要是Django ,Flask和FastAPI

1. Django
特点:高层次的Python Web框架,鼓励快速开发和简洁的设计。
优点:自带ORM、强大的管理后台、用户认证系统、自动生成的管理界面等。
适用场景:适用于需要快速开发、拥有丰富功能和需要强大后端管理的项目


2. Flask
特点:一个轻量级的Web框架,非常适合小型应用和微服务。
优点:高度可扩展,易于学习和使用,具有丰富的扩展插件。
适用场景:适用于小型项目、微服务架构和需要定制化的应用


3. FastAPI
特点:用于构建API的现代、快速(高性能)Web框架,基于Python 3.6+类型提示。
优点:高性能、自动生成文档(Swagger UI 和 ReDoc)、支持异步编程。
适用场景:适用于需要高性能和自动生成文档的API项目

4. Sanic
特点:一个轻量级,高性能,异步的Web框架
优点:易于学习和使用,支持Python 3.5中添加的async/await语法,速度快
适用场景:适用于小型项目、且对响应速度要求高

   排名          语言            版本            speed(64)   speed(256)   speed(512)

从图中可以看出,sanic框架的响应速度是远远高于其他框架的,所以对于那些轻量级,且对响应速度有要求的框架,使用sanic是非常不错的一个选择

快速入门

安装

pip install sanic

创建一个简单的应用

from sanic import Sanic
from sanic.response import textapp = Sanic("MyHelloWorldApp")@app.get("/")
async def hello_world(request):return text("Hello, world.")if __name__ == '__main__':app.run(host='127.0.0.1', port=8080, access_log=False)

运行python代码出现如上sanic的图标就代表运行成功了

sanic的请求

Request请求:

因为Sanic是一个异步框架,所以处理程序将在asyncio内部运行任务,并将由事件循环调度。这意味着处理程序将在孤立的上下文中执行,并且请求对象对于该处理程序的任务来说是唯一的

JSON(接收json传参)


 Body(接收请求体传参)

request.body 用于处理原始请求体,适用于非表单数据(如JSON、XML等)


Form(接收表单数据)

 request.form 用于处理表单数据,自动解析application/x-www-form-urlencodedmultipart/form-data类型的请求体,并提供一个易于访问的接口


Uploaded (接收文件)


sanic的响应 

 所有处理程序通常返回一个响应对象,中间件也可以选择返回一个响应对象。

除非处理程序是一个流式端点,处理它自己的向客户端发送字节的模式,否则返回值必须是一个sanics .response. httpresponse的实例

最基本的返回

 但通常我们不会直接返回一个httpresponse的实例,而是将实例封装到方法里返回

Text(返回文本)


HTML (返回Html)

 


JSON(返回Json数据)


File(返回文件)


File Streaming(返回流文件) 


Redirect(请求重定向)


 sanic的路由

sanic的路由其实和其他web开发一样,也是支持各种方法,使用起来也十分的简单

 如上图就是不同的方法对应的使用的修饰器来实现,有点类似于java中springmvc的注解

注意:这里需要注意的地方是方法名和路径必须是唯一的,不能够重复,否则会在启动的时候报错

Restful风格的路由

更多细节使用细节可以查看官网的文档

 sanic的蓝图(重点)

蓝图是可用于应用程序中的子路由的对象。蓝图没有向应用程序实例添加路由,而是定义了类似的方法来添加路由,然后以灵活且可插入的方式将其注册到应用程序中

简单点说蓝图相当于是一个子路由,我们可以把方法请求方法写在蓝图中,最后把蓝图注册到应用中,那么蓝图中的方法就会被应用识别和接管

蓝图快速入门

声明一个蓝图

from sanic import Blueprint,textbp = Blueprint('route')@bp.get('/haha')
async def haha(request):return text("Haha, this is a test route.")

注册蓝图到主服务中并启动

访问测试结果

输出访问路径可以正常范文,那么就代表蓝图没啥问题了

蓝图组(进阶)

蓝图也可以作为列表或元组的一部分注册,注册器将递归地循环遍历蓝图的任何子序列并相应地注册它们

api/
├──content/
│ ├──authors.py
│ ├──static.py
│ └──__init__.py
├──info.py
└──__init__.py
app.py

声明authors蓝图

声明 static蓝图

将 authors和static注册他一个蓝图组中(content组)

在声明一个info蓝图

把info和content蓝图组都注册到蓝图组api中

最后把api蓝图图注册到应用中,这样蓝图组里面定义的方法就会被app(应用接管和识别)

访问路径=蓝图组前缀+蓝图前缀+路由

  info == /api/info/

static == /api/content/satic

访问结果:

到这里sanic的基本常见的使用都介绍的差不多了,但它的功能不仅仅这些,如果你想了解更多的使用细节,可以去官网查看,最后如 果有不理解或者错误的地方,欢迎留言

这篇关于Sanic快速入门(详细,全面,通俗易懂)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1109160

相关文章

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)