正如golang http
包文档所说,http.Server
在Shutdown()
调用后所有处理程序完成后才会关闭。如果处理程序花费的时间太长,则上下文将过期,Shutdown()
将返回错误。在调用server.Shutdown()
时,如何强制处理程序立即返回?在Context().Done()
被调用后,http.Request
的{{1}}会被关闭吗?
答案 0 :(得分:3)
没有。如果您read the docs,它会准确解释Shutdown
的作用,明确说明它不中断活动连接(强调添加):
Shutdown正常关闭服务器而不会中断任何活动连接。关闭工作首先关闭所有打开的侦听器,然后关闭所有空闲连接,然后无限期地等待连接返回空闲然后关闭。如果提供的上下文在关闭完成之前到期,则Shutdown返回上下文的错误,否则它将返回关闭服务器的基础监听器返回的任何错误。