为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
ibeautiful 2022-09-19 15:03:22
我用于向客户端返回超时。这工作正常,问题是如果触发了超时,我正在尝试调用一些代码。我已经浏览了文档和源代码,但我找不到一个好的方法来做到这一点。响应只是回到客户端,我找不到一种方法来对上下文或响应编写器等进行任何内省。http.TimeoutHandler调用代码无权访问上下文,因此我无法检查它。写入的实际结构确实将我需要的信息放入其中(它是 ),但我无法访问它,因为接口不支持访问这些变量。http.ResponseWriterhttp.TimeoutHandlerhttp.timeoutWriterhttp.ResponseWriter我对围棋没有太多的经验,但我不禁认为我将不得不重新实现我自己的,因为我看不到一种方法来做我需要做的事情。http.TimeoutHandler我错过了什么吗?
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

从 的源中可以看出,它将请求中的上下文设置为具有超时的上下文。这意味着,在您的处理程序中,您可以使用上下文来查看是否发生了超时:TimeoutHandler


func MyHandler(w http.ResponseWriter,r *http.Request) {

  ...

  if r.Context().Err()==context.DeadlineExceeded {

     // Timeout happened

  }

}


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信