【Python系列】FastAPI 与 Uvicorn:快速启动你的异步 Web 应用

举报
kwan的解忧杂货铺 发表于 2024/11/26 00:12:34 2024/11/26
【摘要】 引言在当今的软件开发领域,异步编程已经成为提高应用性能和响应速度的关键技术之一。FastAPI 和 Uvicorn 的组合正是为了满足这一需求而诞生的。FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 APIs,而 Uvicorn 是一个轻量级的 ASGI 服务器,用于运行异步 Web 应用。 FastAPI 简介FastAPI 是一个用于构建 API 的现代 Pyth...

引言

在当今的软件开发领域,异步编程已经成为提高应用性能和响应速度的关键技术之一。FastAPI 和 Uvicorn 的组合正是为了满足这一需求而诞生的。FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 APIs,而 Uvicorn 是一个轻量级的 ASGI 服务器,用于运行异步 Web 应用。

FastAPI 简介

FastAPI 是一个用于构建 API 的现代 Python Web 框架,它基于标准 Python 类型提示。FastAPI 具有以下特点:

  1. 快速:性能与 NodeJS 和 Go 相媲美,甚至在某些情况下更快。
  2. 简洁:代码量更少,更易于理解和维护。
  3. 自动文档:自动生成 API 文档,支持 OpenAPI 规范。
  4. 数据验证:自动请求数据验证和序列化。
  5. 异步支持:完全异步,可以利用 Python 3.7+的异步功能。

Uvicorn 简介

Uvicorn 是一个异步 Web 服务器网关接口(ASGI)服务器,使用uvloop作为其事件循环,并且使用httptools作为其 HTTP 解析器。Uvicorn 的主要特点包括:

  1. 轻量级:Uvicorn 是一个轻量级的 ASGI 服务器,易于集成和部署。
  2. 高性能:利用uvloophttptools,Uvicorn 提供了出色的性能。
  3. 异步支持:Uvicorn 完全支持异步应用,可以与 FastAPI 无缝配合。

环境准备

在开始之前,你需要确保你的开发环境中安装了 Python 3.7 或更高版本。你还需要安装 FastAPI 和 Uvicorn。可以通过以下命令安装:

pip install fastapi uvicorn

创建 FastAPI 应用

首先,创建一个 Python 文件,例如main.py,并编写你的 FastAPI 应用:

from fastapi import FastAPI

app = FastAPI()

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

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

在这个简单的例子中,我们定义了一个 FastAPI 应用,其中包含两个路由:一个根路由和一个带参数的路由。

使用 Uvicorn 启动 FastAPI 应用

现在,你可以通过 Uvicorn 来启动你的 FastAPI 应用。在命令行中,运行以下命令:

uvicorn main:app --reload

这里的main是你的 Python 文件名(不包括.py扩展名),而app是你在文件中定义的 FastAPI 实例的变量名。--reload参数表示在代码更改时自动重载服务器,这对于开发非常有用。
在这里插入图片描述

访问你的应用

启动 Uvicorn 服务器后,你可以通过浏览器或任何 HTTP 客户端访问你的应用。例如,访问http://127.0.0.1:8000将返回:

{ "Hello": "World" }

如果你访问http://127.0.0.1:8000/items/1?q=somequery,你将得到:

{ "item_id": 1, "q": "somequery" }

进阶使用

FastAPI 和 Uvicorn 的强大之处在于它们的扩展性和灵活性。你可以使用依赖注入、中间件、异常处理等高级功能来增强你的应用。例如,你可以定义依赖项来处理数据库连接、认证等。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。