13.6 异步任务队列(Celery + Redis)
FastAPI入门教程:Python初学者快速上手Web API开发
本教程面向有Python语法基础的初学者,无Web开发经验,详细讲解如何使用FastAPI构建简单Web API,包含实践示例、生活化类比和成功时刻,帮助快速建立信心。教程还简要介绍了异步任务队列(Celery + Redis)的概念。
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应用
- 创建一个新的 Python 文件,命名为
main.py(你可以用任何文本编辑器,如 VS Code 或记事本)。 - 复制以下代码到
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 的常见输出格式。
第三步:运行应用并看到成果
- 在终端中,导航到
main.py所在的目录。 - 运行命令:
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 则是团队之间的沟通板,确保任务分配顺畅。
简单示例(可选,作为概念理解)
- 安装 Celery 和 Redis:
pip install celery redis
- 创建一个新文件
celery_app.py,设置基本任务。 - 在 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 集成。
保持动手实践,享受编程的乐趣!如果有问题,记得查看文档或搜索社区帮助。祝你学习愉快!