确定超时处理程序是否已超时

我用于向客户端返回超时。这工作正常,问题是如果触发了超时,我正在尝试调用一些代码。我已经浏览了文档和源代码,但我找不到一个好的方法来做到这一点。响应只是回到客户端,我找不到一种方法来对上下文或响应编写器等进行任何内省。http.TimeoutHandler

调用代码无权访问上下文,因此我无法检查它。写入的实际结构确实将我需要的信息放入其中(它是 ),但我无法访问它,因为接口不支持访问这些变量。http.ResponseWriterhttp.TimeoutHandlerhttp.timeoutWriterhttp.ResponseWriter

我对围棋没有太多的经验,但我不禁认为我将不得不重新实现我自己的,因为我看不到一种方法来做我需要做的事情。http.TimeoutHandler

我错过了什么吗?


ibeautiful
浏览 112回答 1
1回答

holdtom

从 的源中可以看出,它将请求中的上下文设置为具有超时的上下文。这意味着,在您的处理程序中,您可以使用上下文来查看是否发生了超时:TimeoutHandlerfunc MyHandler(w http.ResponseWriter,r *http.Request) {  ...  if r.Context().Err()==context.DeadlineExceeded {     // Timeout happened  }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go