在window FastApi 作为 服务启动
使用 uvicorn + NSSM(作为 Windows 服务)
NSSM(Non-Sucking Service Manager)是一个轻量级工具,可将任何程序注册为 Windows 服务。

步骤 1:下载 NSSM
从官网下载:https://nssm.cc/download
其它网下载:https://soft.3dmgame.com/down/214439.html

步骤 2:安装服务
以管理员身份打开命令提示符(CMD),执行:
cmd
nssm install FastAPI_Service
随后会弹出图形界面,填写以下信息:
- Path :
C:\你的项目路径\venv\Scripts\uvicorn.exe(如果使用虚拟环境)或者 C:\Program Files\Python314\Scripts\uvicorn.exe - Startup directory :
C:\你的项目路径或者 E:\shop - Arguments :
main:app --host 0.0.0.0 --port 8000或者 shop:app --host 0.0.0.0 --port 8088
步骤 3:启动服务
cmd
net start FastAPI_Service
服务将在后台运行,开机自启。
使用 python 直接启动(适合开发)
如果只是临时运行,可以直接在命令行启动:
cmd
cd C:\你的项目路径
venv\Scripts\activate
uvicorn main:app --reload --host 0.0.0.0 --port 8000
注意 :
--reload会在代码修改时自动重启,仅用于开发环境。
关键注意事项
-
1.防火墙:确保 Windows 防火墙允许指定端口(如 8000)的入站连接。
-
2.虚拟环境:如果使用了虚拟环境,确保路径正确。
-
3.依赖安装:在项目目录下安装依赖:
cmd
pip install fastapi uvicorn -
4.生产环境 :生产环境建议使用
--workers参数(如--workers 4)提升性能,并配合反向代理(如 Nginx)。
检查并修复NSSM配置(推荐)
步骤1:打开NSSM编辑界面
以管理员身份运行CMD或PowerShell,执行:
cmd
nssm edit FastAPI_Service
步骤2:检查并修正配置
在弹出的图形界面中,检查以下三个关键部分:
1. Path(路径)
- 应该是
uvicorn.exe的完整路径 - 正确示例 :
C:\项目路径\venv\Scripts\uvicorn.exe - 常见错误 :只写了
uvicorn,没有完整路径
2. Arguments(参数)
- 应该是:
main:app --host 0.0.0.0 --port 8000 - 确保
main:app对应你的FastAPI应用文件
3. Startup directory(启动目录)
- 应该是你的项目根目录
- 正确示例 :
C:\项目路径
步骤3:测试配置
在NSSM界面点击 "Test" 按钮,测试配置是否正确。
步骤4:保存并重启服务
保存配置后,在命令行执行:
cmd
net stop FastAPI_Service
net start FastAPI_Service
重新安装服务
步骤1:删除现有服务
cmd
nssm remove FastAPI_Service confirm
步骤2:确认文件路径
在项目目录下,确认这些文件存在:
- 1.
main.py(你的FastAPI应用文件) - 2.
venv\Scripts\uvicorn.exe(虚拟环境中的uvicorn)
步骤3:重新安装服务
cmd
nssm install FastAPI_Service
在弹出的界面中:
- Path : 浏览选择
C:\项目路径\venv\Scripts\uvicorn.exe - Arguments :
main:app --host 0.0.0.0 --port 8000 - Startup directory :
C:\项目路径
步骤4:启动服务
cmd
net start FastAPI_Service
使用绝对路径
如果NSSM配置有问题,可以尝试创建一个批处理文件来启动服务:
1. 创建启动脚本 start_service.bat:
batch
@echo off
cd /d "C:\项目路径"
call venv\Scripts\activate.bat
uvicorn main:app --host 0.0.0.0 --port 8000
2. 用NSSM指向批处理文件:
cmd
nssm remove FastAPI_Service confirm
nssm install FastAPI_Service
在NSSM配置中:
- Path :
C:\项目路径\start_service.bat - Arguments: (留空)
- Startup directory :
C:\项目路径
检查并修复虚拟环境
步骤1:确认虚拟环境存在
cmd
cd C:\项目路径
dir venv\Scripts\uvicorn.exe
如果文件不存在,需要重新创建虚拟环境:
cmd
python -m venv venv
venv\Scripts\activate.bat
pip install fastapi uvicorn
步骤2:检查服务账户权限
服务可能使用了错误的账户运行。在NSSM配置中:
- 1.切换到 "Details" 选项卡
- 2.在 "Log on" 部分,尝试选择 "Local System account"
- 3.保存并重启服务
调试技巧
1. 查看服务日志
在NSSM配置中:
-
切换到 "I/O" 选项卡
-
设置 "Output (stdout)" 和 "Output (stderr)" 到文件路径,例如:
text
text
C:\项目路径\service.log C:\项目路径\service_error.log
这样可以看到服务启动时的详细错误信息。
2. 手动测试命令
在项目目录下,手动运行相同的命令,看是否有错误:
cmd
cd C:\项目路径
venv\Scripts\activate.bat
uvicorn main:app --host 0.0.0.0 --port 8000
3. 检查事件查看器
- 1.打开 "事件查看器"
- 2.导航到 "Windows 日志" → "应用程序"
- 3.查找与 "FastAPI_Service" 相关的错误条目
常见错误场景及解决
场景1:找不到 uvicorn.exe
解决:确保在NSSM的Path中使用完整路径:
text
C:\Users\你的用户名\项目路径\venv\Scripts\uvicorn.exe
场景2:虚拟环境未激活
解决:在批处理文件中添加激活命令,或在NSSM的Arguments中添加:
text
-c "import sys; sys.path.insert(0, '.'); from uvicorn import main; main(['main:app', '--host', '0.0.0.0', '--port', '8000'])"
场景3:端口被占用
解决:修改端口或结束占用进程:
cmd
netstat -ano | findstr :8000
taskkill /PID <PID> /F
快速排查清单
-
- 确认
uvicorn.exe路径正确且文件存在
- 确认
-
- 确认
main:app对应正确的Python文件和FastAPI实例
- 确认
-
- 确认项目目录存在且有读取权限
-
- 测试手动运行命令是否成功
-
- 检查是否有防火墙或杀毒软件阻止