登录
首页 >  Golang >  Go问答

Web 服务器正常关闭未按预期工作

来源:stackoverflow

时间:2024-04-09 20:09:36 287浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《Web 服务器正常关闭未按预期工作》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我之前曾在博客中介绍过如何在 Go 中创建一个可以正常关闭的网络服务器。

https://marcofranssen.nl/go-webserver-with-gracefull-shutdown/#TLDR

这个解决方案工作得很好,但是对于更大的项目,我想进一步构建代码。

我已按照以下要点重构了此代码。

https://gist.github.com/marcofranssen/699c1aa97c8a33ab20b5eccada275b08

由于某种原因,srv.ListenAndServe() 行似乎没有被执行,而正常关闭仍然像以前一样在 go 例程中运行。

对我来说,代码看起来相同,只是重构为单独的文件并添加了 Start 函数。

谁能解释一下为什么它在我给出中断信号之前不执行,导致http服务器立即启动和关闭?


解决方案


我在社区的一位 Gopher 同伴的帮助下找到了答案。

包含srv.ListenAndServe()的代码行是阻塞代码行,导致这行代码之后的日志不会发生。

在我之前的博客中演示的原始代码中,我将此日志放在 srv.ListenAndServe() 行的前面。因此,在该示例中,相同的代码按预期记录到控制台。

所以这毕竟是一个愚蠢的错误,你可以轻松地阅读多次。基本上交换了两行代码,我忘记了 http.ListenAndServe() 的阻塞行为。

要点:

http.ListenAndServe() 根据定义是阻塞的,因此不会运行该行之后的任何代码。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>