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
常用于运行基于 FastAPI
、Starlette
等异步 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
文件并保存后,服务器会自动重启,应用新的代码更改。