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

将上下文添加到现有的 http 处理程序函数

将上下文添加到现有的 http 处理程序函数

Go
缥缈止盈 2022-06-13 10:36:04
我必须遵循设置。我有一个多路复用 HTTP 服务器,我想向其添加上下文以提高弹性。srv := http.Server{    Addr:         ":" + _operatorPortStr,    WriteTimeout: 8 * time.Second,    Handler:      http.TimeoutHandler(router, 5*time.Second, "Timeout!\n"),}srv.ListenAndServe()我现在有了我的处理函数,如果 HTTP 请求达到超时,我想终止它。func Deploy(w http.ResponseWriter, r *http.Request) {loadConfigs()calltos3()updateResource()}主要问题是不可能将上下文传递给每个函数,因为它们的级别非常高。那么在超时后向处理程序添加上下文以终止请求的正确方法是什么?
查看完整描述

1 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

超时处理程序在请求中设置上下文。您可以使用请求上下文来检查请求是否超时:


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

   ...

   select {

      case <-r.Context().Done():

         // Timed out

      default:

   }

   ...

}


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

添加回答

举报

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