FastAPI 的简介和安装,你了解多少

本文介绍了Python中GIL对高并发的限制,然后重点阐述了FastAPI如何通过异步编程和ASGI服务器实现高性能API开发,包括其快速、高效和易用的特点,以及如何在PyCharm中使用FastAPI进行实例开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

在高并发领域,Python因为全局解释器锁(GIL)的存在导致了在任何给定时间只有一个线程执行Python字节码,即使在多核处理器上也是如此。这意味着Python多线程程序无法充分利用多核处理器的优势。针对这个问题,python 的解决方案就是协程。

回到 web 这个方向来,也会有类似的问题,直到 FastAPI 的出现才真正的将 web 的异步发挥到了极致!所以在过去几年中,FastAPI 使用率持续走高,从 2021 年的 14% 快速上升到 2023 年的 25%

FastAPI 简介

FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.8+ 并基于标准的 Python 类型提示。
也就是说,要用 Python 3.8+ 才可以使用 FastAPI,另外其主要用来构建 API,特别适应现代前后端分离的场景。这一框架专注于高性能、高并发,利用了类型提示和内置异步支持等现代 Python 功能。专为使用 Python 构建 API 而设计,并且 FastAPI 还拥有强大的 API 文档,以及一系列额外功能和优势提升开发效率。

关键特性:

  • 快速:可与 NodeJSGo 并肩的极高性能。最快的 Python web 框架之一。
  • 高效编码:提高功能开发速度约 200% 至 300%。
  • 更少 bug:减少约 40% 的人为(开发者)导致错误。
  • 智能:极佳的编辑器支持。处处皆可自动补全,减少调试时间。
  • 简单:设计的易于使用和学习,阅读文档的时间更短。
  • 简短:使代码重复最小化。通过不同的参数声明实现丰富功能。bug 更少。
  • 健壮:生产可用级别的代码。还有自动生成的交互式文档。
  • 标准化:基于(并完全兼容)API 的相关开放标准:OpenAPI (以前被称为 Swagger) 和 JSON Schema。

FastAPI 环境安装

  1. python 环境安装
    根据要求至少需要 python 3.8及其以上,
    可以去 python 官网 自行下载安装,这里我们用 python 3.11

  2. FastAPI 环境安装

pip install fastapi
pip install "uvicorn[standard]"

其中 pip install “uvicorn[standard]” 用于安装ASGI服务器 uvicorn库及其标准依赖项。

  1. Python IDE
    这里我们选择 PyCharm ,下载后安装即可。
    没有专业版秘钥的可以下载 社区版本:PyCharm Community Edition

FastAPI 例子

首先我们先直观的感受一下,FastAPI 的使用

from fastapi import FastAPI
app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

@app.get("/hello/{name}")
async def say_hello(name: str):
    return {"message": f"Hello {name}"}

if __name__ == '__main__':
    import uvicorn
    uvicorn.run("main:app",reload=True)

在 PyCharm 中执行上述代码后,可以在浏览器中分别访问

  1. http://127.0.0.1:8000/ 返回
{"message":"Hello World"}
  1. http://127.0.0.1:8000/hello/xiaomin
{"message":"Hello xiaoming"}

至此 FastAPI 的例子就大功告成了。在下一章,我们会详细描述一下 FastAPI 两大组件

扩展

FastAPI 和 ASGI服务器

FastAPI是一个基于Python的现代Web框架,它使用ASGI(Asynchronous Server Gateway Interface)服务器来运行。ASGI是一个异步的Python Web服务器接口规范,它定义了Web应用程序与服务器之间的通信协议。

FastAPI之所以需要ASGI服务器的支持,是因为它借助ASGI能够实现高性能和异步处理。ASGI服务器能够处理并发请求和非阻塞I/O操作,以提供更好的性能和可伸缩性。

FastAPI基于异步协程编程模型,使用asyncawait关键字来编写异步视图函数。ASGI服务器能够理解和运行这些异步函数,并与其他ASGI应用程序(如Starlette、uvicorn等)进行交互。ASGI服务器提供了事件循环和任务调度,能够同时处理多个请求,使得FastAPI能够高效地处理多个并发请求。

除此之外,ASGI服务器还支持WebSocket协议和其他一些高级功能,使得FastAPI能够轻松地处理实时通信和长连接等需求。

总之,FastAPI需要ASGI服务器支持,以便利用异步协程和高性能的特性,提供快速、可扩展的Web应用程序开发体验。ASGI服务器为FastAPI提供了并发处理、非阻塞I/O和其他高级功能的基础设施。

Uvicorn 命令

uvicorn.run(“main:app”,reload=True)
uvicorn main:app 命令含义如下:

  • mainmain.py 文件(一个 Python “模块”)。
  • app:在 main.py 文件中通过 app = FastAPI() 创建的对象。
  • --reload:让服务器在更新代码后重新启动。仅在开发时使用该选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shengjk1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值