使用 http.TimeoutHandler 还是 ReadTimeout/WriteTimeout?

mat*_*tes 5 go

如果我已经设置了服务器的ReadTimeout 和 WriteTimeout ,另外使用http.TimeoutHandler是否有意义?似乎这个场景是相互排斥的?

des*_*rth 9

这两个处理 http 请求/响应生命周期的不同方面。

http.TimeoutHandler用于限制 http.Handler 的执行时间。如果没有在规定的时间内完成,它将返回503状态代码给客户端http.Handler

whileReadTimeoutWriteTimeout处理网络 I/O 超时,即分别向您的客户端读/写请求/响应正文所需的时间。

因此,http.TimeoutHandler通过包装您的原始处理程序来处理您的处理程序(处理 http 请求的代码块)需要在设定的时间内完成的情况。whilehttp.WriteTimeouthttp.ReadTimeout当您不想无限期地等待请求/响应的网络读/写时使用。

  • @mattes,不,`TimeoutHandler` 处理您的处理程序(处理 http 请求的代码块)需要在设定的时间内完成的情况,而当您不想无限期地等待网络写入时使用 `WriteTimeout`。 (2认同)

Zak*_*Zak 6

这篇博客文章很好地解释了,但本质上它们扮演的角色略有不同,如下所示:

在此处输入图片说明

链接到博客文章

您还没有包括您的用例是什么,但希望这是能够做出决定的足够信息。