不灭的火

革命尚未成功,同志仍须努力下载JDK17

作者:AlbertWen  添加时间:2025-03-01 01:41:12  修改时间:2025-04-06 23:19:04  分类:02.Flask/FastAPI框架  编辑

uvicorn main:app --reload 是一个在命令行中使用的命令,主要用于启动基于 Uvicorn 服务器运行的 Python Web 应用程序,并且开启自动重载功能。下面为你详细解释命令中各个部分的含义

1. uvicorn

Uvicorn 是一个基于 uvloop 和 httptools 的快速 ASGI(Asynchronous Server Gateway Interface,异步服务器网关接口)服务器实现。ASGI 是 WSGI(Web Server Gateway Interface,Web 服务器网关接口)的异步版本,它允许 Python Web 应用程序以异步方式处理请求,提高应用程序的并发处理能力。Uvicorn 常用于运行基于 FastAPIStarlette 等异步 Web 框架开发的应用程序。

2. main:app

这部分指定了要运行的 Python 应用程序的入口点,它由两部分组成,用冒号 : 分隔:

  • main:表示一个 Python 模块名,通常对应一个名为 main.py 的文件。也就是说,Uvicorn 会在当前工作目录下查找名为 main.py 的文件。
  • app:表示在 main.py 文件中定义的一个 ASGI 应用程序实例。在 FastAPI 应用中,通常会有类似如下的代码:
1
2
3
4
5
6
7
8
# main.py
from fastapi import FastAPI
 
app = FastAPI()
 
@app.get("/")
def read_root():
    return {"Hello": "World"}

在这个例子中,app 就是 FastAPI 应用程序的实例。

3. --reload

这是一个命令行选项,用于开启自动重载功能。当你开启这个选项后,Uvicorn 会监控项目中的文件变化。如果检测到项目中的 Python 文件有修改,Uvicorn 会自动重启服务器,使新的代码更改生效,这样你就不需要手动停止和重新启动服务器来测试新的代码。

示例

假设你有一个名为 main.py 的文件,内容如下:

1
2
3
4
5
6
7
from fastapi import FastAPI
 
app = FastAPI()
 
@app.get("/")
def read_root():
    return {"Hello": "World"}

在命令行中,进入 main.py 文件所在的目录,然后运行以下命令: 

1
uvicorn main:app --reload

这将启动 Uvicorn 服务器,并运行 main.py 文件中的 app 应用程序实例。同时,当你修改 main.py 文件并保存后,服务器会自动重启,应用新的代码更改。