这段代码是 FastAPI 应用的启动入口,让我们一步步解释为什么需要它:
1. if __name__ == "__main__": 的作用
这是 Python 的一个标准写法,用于判断:
- 当直接运行
app.py文件时,__name__变量会被设置为"__main__",此时执行缩进内的代码 - 当
app.py被其他模块导入时,__name__会是模块名"app",此时不执行缩进内的代码
这样可以确保启动服务器的代码只在直接运行文件时执行,而不会在被导入时意外启动。
2. import uvicorn 的作用
FastAPI 是一个异步 Web 框架,它需要一个 ASGI (Asynchronous Server Gateway Interface) 服务器来运行。uvicorn 是最常用的 ASGI 服务器之一,专门用于运行 FastAPI 等异步应用。
这行代码在需要时才导入 uvicorn,避免不必要的资源消耗。
3. uvicorn.run() 的参数解释
uvicorn.run(
"app:app", # 应用路径:模块名(文件) + 应用实例名
host="0.0.0.0", # 监听的主机地址:0.0.0.0 表示监听所有网络接口
port=8000, # 监听的端口号
reload=True # 开发模式:修改代码后自动重启服务器
)- “app:app”:指定要运行的应用。第一个
app是模块名(即app.py文件),第二个app是你在文件中创建的 FastAPI 实例(app = FastAPI(...))。 - host=“0.0.0.0”:让服务器可以被外部访问(不仅仅是本机的
localhost)。 - port=8000:服务器监听的端口,你可以通过
http://localhost:8000访问应用。 - reload=True:开发模式的便利功能,修改代码后服务器会自动重启,无需手动停止再启动。
4. 总结
这段代码的核心作用是:提供一个简单的方式,让你可以直接运行 python app.py 来启动 FastAPI 服务器。
如果没有这段代码,你需要在命令行中手动执行:
uvicorn app:app --host 0.0.0.0 --port 8000 --reload这段代码只是提供了一个更便捷的启动方式,相当于把命令行参数写进了代码里。
实际运行效果
当你执行 python app.py 时,这段代码会:
- 导入
uvicorn服务器 - 启动服务器监听 8000 端口
- 将 FastAPI 应用挂载到服务器上
- 开发模式下,修改代码会自动重启
这样你就可以通过浏览器访问 http://localhost:8000 来使用你的 API 了。
uv run pytest -xvs --ignore=test_streaming.py