FastAPI 教程

1.6 运行服务器:Uvicorn 和 ASGI 简介

FastAPI入门教程:运行服务器使用Uvicorn和ASGI简介

FastAPI 教程

面向Python初学者的FastAPI教程,详细讲解如何安装和使用Uvicorn运行服务器,简介ASGI协议,包含简单示例和实践步骤,帮助零基础用户快速上手Web开发,建立信心。

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

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

了解更多

运行服务器:Uvicorn 和 ASGI 简介

欢迎来到FastAPI入门教程!在这一节,我们将学习如何运行一个Web服务器,使用Uvicorn和ASGI。别担心,即使你之前没有任何Web开发经验,我们也会一步一步来,让你轻松上手,并体验成功的喜悦。

什么是Uvicorn和ASGI?

想象一下,你想开一家小店铺(代表你的FastAPI应用),但店铺需要一个门面和一个服务员来处理顾客的请求。Uvicorn就是那个高效的服务员,而ASGI则是服务员和店铺之间沟通的规则。

  • Uvicorn: 这是一个轻量级的Web服务器,专门用于运行像FastAPI这样的Python应用。它就像一个专业的邮递员,负责接收和发送HTTP请求和响应。

  • ASGI (Asynchronous Server Gateway Interface): 这是一个协议,定义了Web服务器如何与Python应用交互。它支持异步编程,让你的应用能同时处理多个请求,就像一个多任务处理专家,比传统方式更快。

为什么我们需要它们?

FastAPI本身只是一个框架,用来构建Web应用,但它不能自己运行在网络中。它需要一个服务器来监听网络请求并处理它们。Uvicorn就是这样一个服务器,而ASGI则确保服务器和应用之间能顺畅通信,支持现代Web应用的异步特性。

安装Uvicorn

在开始之前,确保你已经安装了Python和pip。然后,打开你的终端或命令提示符,输入以下命令来安装Uvicorn:

pip install uvicorn[standard]

这个命令会安装Uvicorn及其标准依赖,包括一些额外功能,让你能更顺畅地运行服务器。如果你遇到权限问题,可以尝试使用 pip install --user uvicorn[standard]

创建一个简单的FastAPI应用

让我们从最简单的应用开始,这样你就可以快速看到效果。在你的项目文件夹中,创建一个名为 main.py 的文件,并添加以下代码:

from fastapi import FastAPI

app = FastAPI()

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

解释一下这个代码:

  • 我们从fastapi导入FastAPI类。
  • 创建一个名为 app 的FastAPI实例。
  • 使用 @app.get("/") 装饰器定义了一个路由,当有人访问网站主页(/)时,会执行 read_root 函数。
  • 这个函数返回一个简单的JSON消息:{"Hello": "World"}

运行服务器:你的第一个“成功时刻”

现在是动手实践的时候了!在终端中,确保你位于 main.py 文件所在的目录下,然后输入以下命令:

uvicorn main:app --reload

解释这个命令:

  • uvicorn: 调用Uvicorn服务器。
  • main:app: 告诉Uvicorn你的应用在 main.py 文件中,并且名为 app 的FastAPI实例。
  • --reload: 启用热重载,这样当你修改代码时,服务器会自动重启,非常适合开发和调试。

当你运行这个命令后,你应该会看到类似以下的输出:

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

恭喜你!这就是你的第一个“成功时刻”。服务器已经启动并正在运行,监听本地的8000端口。

现在,打开你的网络浏览器,访问 http://127.0.0.1:8000。你应该会看到一个页面显示 {"Hello": "World"}。太棒了!你的FastAPI应用正在工作,你已经成功创建并运行了一个Web服务器。

理解ASGI:简单解释

当Uvicorn运行时,它使用ASGI协议来与你的FastAPI应用通信。ASGI支持异步操作,这意味着服务器可以同时处理多个请求,而不会阻塞,让你的应用更高效。

用一个生活化类比:传统的服务器像是一个单线电话,一次只能处理一个呼叫;而ASGI服务器像是一个多线电话系统,可以同时接听多个电话,让你的Web应用响应更快,用户体验更好。

常见问题和调试

  • 如果端口8000被占用:你可以指定另一个端口来运行服务器,例如 uvicorn main:app --reload --port 8080,然后访问 http://127.0.0.1:8080

  • 查看详细日志:如果你想了解更多运行细节,可以使用 --log-level debug 参数,如 uvicorn main:app --reload --log-level debug

  • 停止服务器:在终端按 CTRL+C,服务器就会停止运行。

  • 安装问题:如果安装Uvicorn时遇到错误,确保你的Python和pip版本是最新的,或者尝试在虚拟环境中安装。

总结

通过本节教程,你已经学会了如何使用Uvicorn运行一个FastAPI服务器,并简要了解了ASGI的作用。记住,Uvicorn是你的服务器引擎,ASGI是沟通桥梁。通过简单的实践,你成功运行了应用并看到了结果,这建立了你的信心。

下一步,我们可以探索如何添加更多路由、处理请求数据等。继续前进,你已经迈出了Web开发的第一步!如果你有任何问题,随时回顾这些步骤,或者尝试修改代码来看看变化。

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

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

获取工具包