FastAPI 作为 Windows 服务

问题描述

我正在尝试将 FastAPI 作为 Windows 服务运行。找不到任何文档或任何文章来将 Uvicorn 作为 Window 服务运行。 我也尝试使用 NSSM,但我的 Windows 服务停止了。

解决方法

我设法使用 uvicorn 作为 Windows 服务使用 NSSM 运行 FastAPI。

我必须deploy uvicorn programatically,基本上直接从您的 Python 脚本运行 uvicorn,然后使用 NSSM 创建并安装自定义服务。

这是一个基于 FastAPI 的 example 的小示例,但不是从命令行使用 uvicorn main:app --reload 运行它,而是使用您自己的配置添加 uvicorn.run(app,**config)

from fastapi import FastAPI
import uvicorn

app = FastAPI()


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

if __name__ == "__main__":
    uvicorn.run("main:app",host="127.0.0.1",port=5000,log_level="info")

然后您可以使用标准 nssm install command

与 NSSM 一起安装它
nssm.exe install "FastAPIWindowsService" "C:\Scripts\FastAPIWindowsService\venv\Scripts\python.exe" "C:\Scripts\FastAPIWindowsService\src\main.py"

相应地更改您的服务名称、python.exe 的路径和脚本的路径。安装后,您的服务应显示在 Windows 服务管理器中。

希望这对您有所帮助,并且对您有用!

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...