使用sc.exe create替代NSSM部署Uvicorn/FastAPI服务启动失败求助
使用sc.exe create替代NSSM部署Uvicorn/FastAPI服务启动失败求助
各位大佬好,我现在遇到个棘手的问题,想请教下大家。因为当前环境不建议使用NSSM,之前其他服务都是用sc create来部署的,所以想统一用这个方案把我的FastAPI服务也改成Windows服务,但启动的时候一直失败,卡了好一会儿了。
先跟大家说下我的操作过程:
我用sc create创建服务的命令如下,执行后显示创建成功:
F:\PythonAPI>sc create FastAPIService ^ More? binPath= "C:\Windows\System32\cmd.exe /c \"C:\PATH\python.exe -m uvicorn pythonapi:app --host 0.0.0.0 --port 8000\"" ^ More? start= auto [SC] CreateService SUCCESS
但当我执行启动命令时,直接报错:
F:\FPMAPI\PythonAPI>sc start FastAPIService [SC] StartService FAILED 1053: The service did not respond to the start or control request in a timely fashion.
我试过各种变体:比如把启动逻辑写到.cmd文件或者.bin文件里再调用,甚至调整过binPath里的引号和路径格式,但不管怎么改,都是报这个1053错误,上面这个是我试过最直接的命令示例。
另外我也用NSSM测试过部署,过程特别顺畅,服务能正常启动运行,所以应该可以排除FastAPI代码本身的问题——我的主文件是pythonapi.py,还有个buildpythonapi.py用来读取配置变量启动Uvicorn,这两个文件都是没问题的。
现在实在搞不懂,为啥NSSM能行,换成sc create就卡在启动环节了?是不是sc create对这类Python Web服务的启动逻辑有特殊要求?或者我的binPath写法哪里不对?有没有什么调试的方向或者解决办法呀?麻烦大家给支支招,谢谢了!




