FastAPI 教程

13.1 asyncio 基础回顾

Python初学者FastAPI入门教程:从asyncio基础到Web开发

FastAPI 教程

本教程为Python初学者提供FastAPI入门指南,详细讲解asyncio基础概念,通过简单易懂的动手实践,帮助您快速构建首个Web应用,建立Web开发信心。

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

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

了解更多

FastAPI入门教程:从asyncio基础到Web开发

欢迎来到面向Python初学者的FastAPI入门教程!如果您有一些Python语法知识,但对Web开发一窍不通,那么您来对地方了。本教程将帮助您从零开始,通过简单易懂的步骤,快速上手FastAPI,并在过程中回顾必要的asyncio基础。我们将避免深奥的理论,专注于动手实践,让您在几分钟内看到成果,建立信心!

第一部分:为什么选择FastAPI?

FastAPI是一个现代的、快速的(高性能)Python Web框架,用于构建API。它基于Python的异步编程库asyncio,这使得它在处理并发请求时非常高效。想象一下,您开一家小店,如果只能一个一个地接待顾客(同步),人一多就会排队等待;但FastAPI就像是雇佣了多个员工(异步),可以同时服务多个顾客,大大提高效率。这就是异步编程的魅力,而asyncio是它的核心工具。

第二部分:asyncio基础回顾

在进入FastAPI之前,让我们快速回顾一下asyncio,它是异步编程的基础。如果您是初学者,不用担心——我们将用生活化类比来解释。

什么是异步编程?

  • 同步编程:就像您在厨房做饭,必须一步一步来:先切菜,然后炒菜,再煮饭,每步都完成后才能开始下一步。如果某一步很耗时(比如煮饭),您就得干等着。
  • 异步编程:就像您同时管理多个任务,比如一边煮饭(让它自动进行),一边切菜和炒菜。当煮饭在等待时,您可以做其他事情,而不浪费时间。在编程中,异步允许代码在等待某些操作(如网络请求)完成时,执行其他任务,从而提高效率。

asyncio基本概念

  • async/await:这是Python的语法糖,用于定义异步函数和等待异步操作。简单说,async声明一个函数是异步的,await表示“请等待这个异步操作完成,但在此期间我可以做其他事”。
  • 事件循环:想象成一个调度员,它管理所有异步任务,确保它们高效运行。

简单asyncio示例:建立您的第一个“成功时刻”

让我们写一个简单的Python脚本来感受异步。确保您安装了Python 3.7或更高版本(asyncio已内置)。

import asyncio
import time

# 定义一个异步函数
async def say_hello(name, delay):
    await asyncio.sleep(delay)  # 模拟耗时操作,但不会阻塞
    print(f"Hello, {name}! after {delay} seconds")

# 主异步函数
async def main():
    # 创建异步任务列表
    tasks = [
        say_hello("Alice", 2),
        say_hello("Bob", 1),
        say_hello("Charlie", 3)
    ]
    # 并发运行任务
    await asyncio.gather(*tasks)
    print("所有问候完成!")

# 运行事件循环
if __name__ == "__main__":
    start_time = time.time()
    asyncio.run(main())  # 这是Python 3.7+的简便方式
    end_time = time.time()
    print(f"总用时: {end_time - start_time:.2f} 秒")

运行这个脚本,您会看到输出类似:

Hello, Bob! after 1 seconds
Hello, Alice! after 2 seconds
Hello, Charlie! after 3 seconds
所有问候完成!
总用时: 3.00 秒

注意:即使任务有不同延迟,它们几乎是同时完成的,总用时约3秒(最长延迟),而不是6秒(如果同步运行)。这就是异步的威力!现在您已经体验了第一个“成功时刻”。

第三部分:安装FastAPI

在开始FastAPI之前,确保您有Python环境。然后,打开终端或命令提示符,运行以下命令安装FastAPI和必要的依赖:

pip install fastapi uvicorn
  • fastapi:FastAPI框架本身。
  • uvicorn:一个轻量级的ASGI服务器,用于运行FastAPI应用。ASGI(异步服务器网关接口)是支持异步的Web服务器标准。

第四部分:您的第一个FastAPI应用:Hello World

让我们创建一个最简单的FastAPI应用,让您在浏览器中看到“Hello World”!

  1. 创建一个新文件,命名为 main.py
  2. 在文件中编写以下代码:
from fastapi import FastAPI
import uvicorn

# 创建一个FastAPI实例
app = FastAPI()

# 定义一个根路径的路由
@app.get("/")
async def read_root():
    return {"message": "Hello World!"}

# 运行服务器
if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)
  1. 在终端中,导航到文件所在目录,运行:
python main.py

您会看到输出类似:

INFO: Started server process [12345]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
  1. 打开浏览器,访问 http://localhost:8000,您将看到JSON响应:{"message": "Hello World!"}。恭喜!您的第一个Web API已经运行起来了!这是另一个“成功时刻”。

解释代码:

  • from fastapi import FastAPI:导入FastAPI框架。
  • app = FastAPI():创建一个应用实例。
  • @app.get("/"):这是一个装饰器,表示当用户访问根路径(“/”)时,调用下面的函数。get 表示处理HTTP GET请求。
  • async def read_root():定义异步函数来处理请求,这里直接返回一个字典。FastAPI会自动将其转换为JSON响应。
  • uvicorn.run(...):启动服务器,监听所有网络接口(0.0.0.0)的8000端口。

第五部分:扩展您的FastAPI应用

现在,让我们添加更多功能,巩固您的学习。

示例:添加一个新路由

修改 main.py,添加一个新路径:

from fastapi import FastAPI
import uvicorn

app = FastAPI()

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

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

if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

重新启动服务器(按CTRL+C停止,然后再次运行 python main.py),然后在浏览器中访问:

  • http://localhost:8000/items/123 将返回 {"item_id": 123, "query": null}
  • http://localhost:8000/items/123?q=test 将返回 {"item_id": 123, "query": "test"}

看,FastAPI自动处理了路径参数(item_id)和查询参数(q),并将它们转换为Python类型(如整数)。这就是FastAPI的自动文档和类型检查功能在背后工作。

查看自动API文档

FastAPI自带交互式API文档。在浏览器中访问 http://localhost:8000/docs,您将看到一个漂亮的Swagger UI界面,展示了您的所有路由,并允许您直接测试API。试一试点击端点,看看它是如何工作的!这又是一个令人兴奋的“成功时刻”,让您直观地看到API的功能。

第六部分:总结和下一步

通过本教程,您已经:

  1. 回顾了asyncio基础,理解了异步编程的概念。
  2. 安装了FastAPI和uvicorn。
  3. 创建了您的第一个FastAPI应用,并成功运行了“Hello World” API。
  4. 扩展了应用,添加了新的路由,并体验了自动文档功能。

现在,您已经建立了初步的信心,可以继续探索FastAPI的更多特性,如POST请求、数据库集成、身份验证等。记住,实践是最好的老师——尝试修改代码,添加自己的功能,或查看官方文档(https://fastapi.tiangolo.com/)以深入学习。

成功提示:每当您运行代码并看到预期结果时,庆祝一下这些“成功时刻”,它们将激励您继续前进!祝您学习愉快,快速成为Web开发高手!

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

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

获取工具包