【问题标题】:FastAPI as a Windows serviceFastAPI 作为 Windows 服务
【发布时间】:2021-01-06 07:15:29
【问题描述】:

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

【问题讨论】:

  • 欢迎来到 StackOverflow。如果您可以包含示例代码来说明您要完成的工作以及您期望的结果,那么其他人可能会更好地帮助您。有关其他指导,请参阅 stackoverflow.com/help/how-to-ask。

标签: python windows-services fastapi nssm uvicorn


【解决方案1】:

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

我不得不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 installcommand通过NSSM安装它

nssm.exe install "FastAPIWindowsService" "C:\Scripts\FastAPIWindowsService\venv\Scripts\python.exe" "C:\Scripts\FastAPIWindowsService\src\main.py"

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

希望这对您有所帮助并为您工作!

【讨论】:

  • 在启动服务时,我收到此错误消息:“Windows 无法在本地计算机上启动 'servicename'。有关详细信息,请查看系统事件日志。在系统事件日志中它说:“服务意外终止。系统找不到指定的路径”。但是,我运行 nssm edit 'servicename' 并看到路径在那里。
猜你喜欢
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 2017-03-17
  • 2019-09-04
相关资源
最近更新 更多