千家信息网

python异步的ASGI与Fast Api如何实现

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"python异步的ASGI与Fast Api如何实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python异步的ASGI与Fa
千家信息网最后更新 2026年11月02日python异步的ASGI与Fast Api如何实现

这篇文章主要讲解了"python异步的ASGI与Fast Api如何实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python异步的ASGI与Fast Api如何实现"吧!

Asgi是异步通信服务规范。客户端发起服务呼叫,但不等待结果。调用方立即继续其工作,并不关心结果。如果调用方对结果感兴趣,有一些机制可以让其随时被回调方法返回结果。

ASGI尝试保持在一个简单的应用接口的前提下,提供允许数据能够在任意的时候、被任意应用进程发送和接受的抽象。并且同样描述了一个新的,兼容HTTP请求响应以及WebSocket数据帧的序列格式。允许这些协议能通过网络或本地socket进行传输,以及让不同的协议被分配到不同的进程中。

#Asgi example   async def application(scope, receive, send):    event = await receive()        ...       await send({"type": "websocket.send", ...})

ASGI框架

您可以使用 Uvicorn,Daphne 或 Hypercorn 运行任何 ASGI 框架

对于小型服务,您也可以直接编写 ASGI 应用程序。例如之前编写的异步框架。

Python 中有以下几个支持 ASGI 的异步框架

Starlette
Starlette 是一个轻量级的 ASGI 框架/工具包。它是构建高性能异步服务的理想选择,并且支持 HTTP 和 WebSockets。

Django Channels
ASGI 规范最初是设计就是用于 Django Channels 的。
Channels 与其他ASGI框架略有不同,它在线程框架后端上提供了异步前端。
同时 Django Channels 支持 WebSocket,后台任务和长期运行的连接,而应用程序代码仍在标准线程上下文中运行

Quart
Quart 是一个类似于 Flask 的 ASGI Web 框架。Quart 不仅与 Flask 相似,而且与 Flask API 兼容!
该框架的作者希望保留了Flask 的风格,只是向其中添加异步、WebSocket 和 HTTP 2支持。
因此,你可以从 Flask 文档中学习 Quart 的用法,只需要记住 Quart 中的函数是异步的就行。

一个简单的 Quart 服务:

from quart import Quartapp = Quart(name)@app.route("/")async def hello():return "hello"app.run()

和 Flask 是不是很像,只是多了一个异步 async
由于 Quart 是从 Flask 中演进过来的,因此 Flask 的所有功能均可用:路由,中间件,会话,模板,蓝图等

ASGI服务器

Uvicorn 是一个快速的 ASGI 服务器,Uvicorn 是基于 uvloop 和 httptools 构建的,是 Python 异步生态中重要的一员。
Uvicorn 当前支持 HTTP / 1.1 和 WebSockets,将来计划支持HTTP / 2。
版本要求 Python 3.5 以上,Uvicorn 的安装,

pip install uvicorn

示例如下:

async def app(scope, receive, send):    assert scope["type"] == "http"    await send({        "type": "http.response.start",        "status": 200,        "headers": [            [b"content-type", b"text/plain"],        ]    })    await send({        "type": "http.response.body",        "body": b"Hello, world!",    })

运行命令如下,

uvicorn demo:app
服务启动之后,我们通过浏览器就能方位该服务,默认端口 8000

Daphne
Daphne 服务器是最早为 Django Channels 提供支持的 ASGI 服务器
Daphne 它在生产中广泛运行,并支持HTTP / 1.1,HTTP / 2和 WebSockets。

安装和运行的命令如下:

pip install daphne daphne app:App和 uvicorn 命令类似,app 是文件名称,APP 是应用程序

Hypercorn
Hypercorn 最初是框架 Quart 的一部分,然后被分离为独立的 ASGI 服务器
同样的,Hypercorn 支持 HTTP/1.1, HTTP/2, 以及 WebSockets.
安装和运行的命令如下:
pip install hypercorn hypercorn app:App

FastAPI

FastAPI 是一个基于 Starlette 和 Pydantic 的 API 框架,其灵感来自以前的 APISta 服务器版本
使用 Python 3.6+ 类型声明编写 API 函数参数,并获得自动数据转换,数据验证。
FastApi 最主要的特点是快,非常高的性能,向 NodeJS 和 Go 看齐,现有最快的Python框架之一
同时它可以自动生成交互式 API 文档 UI,编写 API 接口后,你就可以使用符合标准的 UI 如 SwaggerUI,ReDoc 等来使用 API。

其特点如下:

  • 快速:拥有非常高的性能,归功于 Starlette 和 Pydantic;Starlette 用于路由匹配,Pydantic 用于数据验证

  • 开发效率:功能开发效率提升 200% 到 300%

  • 减少 bug:减少 40% 的因为开发者粗心导致的错误

  • 智能:内部的类型注解非常完善,编辑器可处处自动补全

  • 简单:框架易于使用,文档易于阅读

  • 简短:使代码重复最小化,通过不同的参数声明实现丰富的功能

  • 健壮:可以编写出线上使用的代码,并且会自动生成交互式文档

  • 标准化:兼容 API 相关开放标准

  • 它使用了 Python 的类型注解

示例如下:

先安装依赖的库

pip install fastapipip install uvicorn
import uvicornfrom fastapi import FastAPI# 类似于 app = Flask(__name__)app = FastAPI()# 绑定路由和视图函数@app.get("/")async def root():    return {"message": "Hi juejin"}# 在 Windows 中必须加上 if __name__ == "__main__",否则会抛出 RuntimeError: This event loop is already runningif __name__ == "__main__":    # 启动服务,因为我们这个文件叫做 main.py,所以需要启动 main.py 里面的 app    # 第一个参数 "main:app" 就表示这个含义,然后是 host 和 port 表示监听的 ip 和端口    uvicorn.run(app="main:app", host="127.0.0.1", port=8000, reload=True, debug=True)

FastAPI 的几大功能:类型检查、自动 swagger UI、支持 asyncio、强大的依赖注入系统

感谢各位的阅读,以上就是"python异步的ASGI与Fast Api如何实现"的内容了,经过本文的学习后,相信大家对python异步的ASGI与Fast Api如何实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

服务 框架 支持 运行 服务器 数据 应用 不同 命令 文档 标准 类型 结果 代码 函数 功能 参数 应用程序 程序 路由 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 亿人帮互联网科技有限公司 广州淘业互联网络科技 互联网中国科技 互联网金融 金融科技 齐家互联网科技 凡科互联网科技 互联网金融和金融科技 科技类的互联网平台 丰台科技园 互联网公司 海南科技产业互联网平台 欧洲十大科技互联网公司 青岛科技大学互联网大赛研究生 互联网科技创新的路径 长沙茂晟互联网科技有限公司 智帮互联网科技公司最近动向 云南省自由互联网科技有限公司 浙南科技城互联网大厦招聘 中国互联网公司的科技投入 科技美学互联网 艺术 如何强化互联网金融科技 互联网科技工作委员会主任 科技服务与互联网 互联网科技的英文 互联网科技类展会 宁夏众和广鑫互联网科技有限公司 烟台灵鸽互联网科技有限公司 上海钢联属于互联网科技股吗 雨阳互联网卡科技有限公司 上海万顺科技互联网有限公司招聘 互联网科技大会大佬
0