IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 为什么选择学习 Sanic 框架 -> 正文阅读

[网络协议]为什么选择学习 Sanic 框架

Web Server 和框架

Sanic 称自己既是一个网络框架,也是一个网络服务器。这是什么意思?更重要的是,为什么这很重要?

那么什么是 Web Server?

Web Server

Web服务器是一种软件,旨在通过 HTTP 协议传递文档和数据。它的功能是接受传入的 HTTP 请求,对消息进行解码以了解请求试图完成的任务,并提供适当的响应。Web 服务器的语言是 HTTP 协议。

我们可以设置一个简单的Sanic服务器,然后从 curl 发出请求,并查看消息。

  1. 创建一个server.py 文件,写入如下代码:

from sanic import Sanic, text, Request

app = Sanic(__name__)


@app.post("/")
async def handler(request: Request):
  message = (
    request.head + b'\n\n' + request.body
  ).decode("utf-8")
  
  print(message)
  return text("Done")
  
app.run(port=8088, debug=True)

  1. 执行sanic server.app ,运行该服务器

  2. 打开另一个终端,运行curl localhost:8088 -d '{"foo": "bar"}' 语句,能看到如下输出:

然后回到另一个终端,能看到 HTTP 请求消息,如下内容:

POST / HTTP/1.1
Host: localhost:8088
User-Agent: curl/7.68.0
Accept: */*
Content-Length: 14
Content-Type: application/x-www-form-urlencoded

{"foo": "bar"}

  • 第一行包含 HTTP 方法、路径和使用的 HTTP 协议

  • 接下来是 HTTP 头的列表,每行一个,格式为key:value

  • 最后是 HTTP 正文,前面有一个空行。HTTP 响应非常相似:

HTTP/1.1 200 OK
content-length: 4
connection: keep-alive
content-type: text/plain; charset=utf-8
Done

  • 第一行包含 HTTP 协议,然后是 HTTP 状态和状态描述

  • 接下来是 HTTP 头的列表,每行一个,格式为 key:value

  • 最后是HTTP正文(如果有),前面有一个空行。

虽然这是 Web 服务器的语言,但编写所有这些内容非常麻烦。因此,Web 浏览器和 HTTP 客户端库等工具被创建来为我们构建和解析这些消息。

Web 框架

当然,我们可以用 Python 编写一个程序,接收这些原始 HTTP 消息,对它们进行解码,然后返回一个适当的 HTTP 响应消息。然而,这将需要大量的文件,难以扩展,并且容易出错。

有一些工具可以帮我们做到这一点:Web框架。Web 框架的工作是构建 HTTP 消息并适当地处理请求。许多框架通过提供便利和实用程序来进一步简化流程。

Python 生态系统中有许多 Web 框架在不同程度上完成了这项工作。有些提供了大量的功能,有些则非常稀少。有些非常严格,有些则更加开放。Sanic 只在不妨碍开发人员的情况下,才尝试保持功能丰富的连续性。

Sanic提供的一个功能是,它既是一个 Web 框架,也是一个 Web 服务器。Web 框架做的就是有一个服务器调用一个输入函数,向其传递有关请求的信息,并得到响应。

async/await 风格的协程处理程序的项目,绝大多数都需要运行一个ASGI服务器。它遵循一个类似的模式:一个ASGI就绪的服务器调用一个ASGI就绪的框架。

这两个组件使用一个特定的协议相互操作。目前有三种流行的ASGI服务器:uvicornhypercorndaphne

Sanic

正因为 Sanic 诞生于 ASGI 之前的时代,它需要自己的服务器。随着时间的推移,这已经成为它最大的资产之一,并且在很大程度上是它胜过其他大多数 Python 框架的原因。Sanic 服务器的开发非常注重性能和请求/响应周期的最小化。然而,近年来 Sanic 也采用了 ASGI 接口,使其能够由 ASGI 网络服务器运行。

Sanic 具备开箱即用的功能,它可以用于编写,部署和扩展生产级 Web 应用程序。

为什么选择 Sanic 框架学习呢?官方给出了 6 个原因:

特征(Features)

  • 内置极速 web server

  • 生产准备就绪

  • 极高的拓展性

  • 支持 ASGI

  • 简单直观的 API 设计

  • 社区保障

总结

Sanic 会被看作是为 Flask 应用带来 async/await 风格编程的一种尝试。虽然这可能是最初的概念验证的一个公平的观点,但 Sanic 在一个非常不同的道路上发展,其目标和影响是成为一个为性能应用设计的强大工具。

因此,Sanic 通常被那些希望建立一个丰富环境的开发者和团队所使用,以解决他们的应用需求所要求的独特的、明显的设计模式。该项目的意图是消除构建网络服务器的困难或繁琐部分,并提供工具来创建高性能和可扩展的网络应用。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:56:47  更:2022-05-05 11:58:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:40:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码