Golang Windows 服务 - 应用程序正常关闭后停止

问题描述 投票:0回答:1

我一直在使用 net/http 构建一个 Web 服务。小型 Web 服务将作为 Windows 服务启动,如下所示:https://github.com/Technololist/golang-http-windows-service/blob/master/websvc.go

当通过 Windows 上的“服务”调用“停止”时,服务似乎将终止 Web 服务。 我想等到Web服务和所有底层功能都完成后,然后停止服务。

您对如何使代码像上面提到的那样工作有什么想法或建议吗?我想我缺少一些有关 Windows 服务及其在 Golang 中如何工作的知识。

谢谢你, 延斯

go windows-services
1个回答
0
投票

示例代码使用

http.ListenAndServe()
,它以无法从代码中关闭服务器的方式包装了一些功能。相反,如果您自己创建一个
http.Server{}
并从
ListenAndServe()
内部调用其
runApp()
函数,则可以在代码的
Shutdown(context.Context)
部分中调用
http.Server{}
case svc.Stop, svc.Shutdown:
函数。一旦您调用
http.Server{}.Shutdown()
,它将停止接受新请求,但已经处理的请求将被完成(如果需要,您可以传递一个带有超时的上下文,以强制中止需要 太长 才能完成的请求)。

© www.soinside.com 2019 - 2024. All rights reserved.