FastAPI 教程

13.6 异步任务队列(Celery + Redis)

FastAPI入门教程:Python初学者快速上手Web API开发

FastAPI 教程

本教程面向有Python语法基础的初学者,无Web开发经验,详细讲解如何使用FastAPI构建简单Web API,包含实践示例、生活化类比和成功时刻,帮助快速建立信心。教程还简要介绍了异步任务队列(Celery + Redis)的概念。

推荐工具
PyCharm专业版开发必备

功能强大的Python IDE,提供智能代码补全、代码分析、调试和测试工具,提高Python开发效率。特别适合处理列表等数据结构的开发工作。

了解更多

FastAPI入门教程:为Python初学者设计的简单指南

什么是FastAPI?

FastAPI 是一个现代、快速(高性能)的 Python Web 框架,专门用于构建 API(应用程序编程接口)。想象一下,API 就像是一个餐厅的服务员:当顾客(客户端,如浏览器或手机应用)点餐(发送请求)时,服务员(FastAPI)快速处理并返回食物(响应)。这让数据交流变得高效和简单。

为什么选择FastAPI?

  • 简单易学:代码清晰,适合初学者。
  • 快速性能:基于 Starlette 和 Pydantic,响应迅速。
  • 自动文档:自动生成交互式 API 文档,无需额外编写。
  • 异步支持:内置异步编程,适合处理并发任务。

前置知识

  • 确保你已安装 Python(建议版本 3.7+)。
  • 基本 Python 语法知识,如函数和变量。
  • 不需要任何 Web 开发经验。

第一步:安装FastAPI和相关工具

打开终端或命令提示符,运行以下命令来安装 FastAPI 和 Uvicorn(一个 ASGI 服务器,用于运行 FastAPI 应用):

pip install fastapi uvicorn

如果安装成功,你会看到类似“Successfully installed”的消息。这就是你的第一个成功时刻:工具准备就绪!

第二步:创建第一个FastAPI应用

  1. 创建一个新的 Python 文件,命名为 main.py(你可以用任何文本编辑器,如 VS Code 或记事本)。
  2. 复制以下代码到 main.py 中:
from fastapi import FastAPI

app = FastAPI()

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

解释一下:

  • from fastapi import FastAPI:导入 FastAPI 库。
  • app = FastAPI():创建一个 FastAPI 应用实例。
  • @app.get("/"):这叫做“装饰器”,它告诉 FastAPI 当用户访问根路径(“/”)时,调用下面的函数。get 表示 HTTP GET 请求(就像在浏览器中输入网址)。
  • def read_root()::定义一个函数,当请求到来时执行。
  • return {"Hello": "World"}:返回一个 JSON 响应,这是 API 的常见输出格式。

第三步:运行应用并看到成果

  1. 在终端中,导航到 main.py 所在的目录。
  2. 运行命令:
uvicorn main:app --reload

解释:uvicorn 是服务器,main:app 指定了应用(从 main.py 中的 app 变量加载),--reload 表示代码更改后自动重启,便于开发。 3. 你会看到输出显示服务在运行,例如:Uvicorn running on http://127.0.0.1:8000。 4. 打开浏览器,访问 http://127.0.0.1:8000

成功时刻!

你应该在浏览器中看到 {"Hello": "World"}。恭喜!你刚刚创建并运行了第一个 Web API!这就像点亮了一盏灯,感受到了编程的魅力。

理解基本概念

路由和请求方法

  • 路由:就像是网址的路径,如 "/" 代表主页。
  • 请求方法:常见的有 GET(获取数据)、POST(发送数据)。类比:GET 像问路,POST 像寄信。

添加更多路由

main.py 中添加另一个路由,例如:

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}
  • 这里 {item_id} 是路径参数,你可以访问如 http://127.0.0.1:8000/items/42 来测试。
  • 刷新浏览器或使用新链接,你会看到 {"item_id": 42},另一个成功时刻!

处理查询参数

修改函数来接受查询参数:

@app.get("/items/")
def read_items(skip: int = 0, limit: int = 10):
    return {"skip": skip, "limit": limit}

访问 http://127.0.0.1:8000/items/?skip=5&limit=20,你会看到 {"skip": 5, "limit": 20}。这展示了如何传递额外参数。

进阶:异步任务队列(Celery + Redis)简介

FastAPI 支持异步编程,这在处理耗时任务(如发送电子邮件或处理大文件)时很有用。Celery 是一个分布式任务队列,Redis 是消息代理,它们可以帮助你在后台运行任务,而不阻塞主 API。

生活化类比

把 FastAPI 想象成前台接待员,处理快速请求;而 Celery 是后台团队,处理需要时间的任务(比如准备复杂订单)。Redis 则是团队之间的沟通板,确保任务分配顺畅。

简单示例(可选,作为概念理解)

  1. 安装 Celery 和 Redis:
pip install celery redis
  1. 创建一个新文件 celery_app.py,设置基本任务。
  2. 在 FastAPI 中触发任务,例如:
from celery import Celery

celery_app = Celery('tasks', broker='redis://localhost:6379/0')

@celery_app.task
def process_data(data):
    # 模拟耗时任务
    return f"Processed: {data}"

@app.post("/process/")
def start_processing(data: str):
    task = process_data.delay(data)
    return {"task_id": task.id, "status": "Task started"}
  • 这只是一个概念展示;作为初学者,你可以先专注于 FastAPI 基础,以后再深入学习异步任务。

总结与下一步

你已经学会了:

  • 安装和运行 FastAPI。
  • 创建简单的路由和响应。
  • 理解了基本概念,并通过示例建立了信心。

成功回顾

  • 工具安装完成。
  • 第一个 API 运行成功。
  • 添加了更多功能,看到了即时结果。

继续学习建议

  • 探索 FastAPI 文档(https://fastapi.tiangolo.com/),了解更多功能如请求体验证、自动文档。
  • 尝试构建一个小项目,比如待办事项 API。
  • 当准备好时,深入学习异步编程和 Celery 集成。

保持动手实践,享受编程的乐趣!如果有问题,记得查看文档或搜索社区帮助。祝你学习愉快!

开发工具推荐
Python开发者工具包

包含虚拟环境管理、代码格式化、依赖管理、测试框架等Python开发全流程工具,提高开发效率。特别适合处理复杂数据结构和算法。

获取工具包