Go 一段典型的请求超时退出代码

下面的代码实现了golang中请求超时退出的机制:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func DoSomething() {
   done := make(chan error)
   go func() {
      done <- DoThing()
   }()

   select {
   case <-time.After(time.Second*10):
      Close()//中止DoThing()的执行,比如关闭网络连接
      return fmt.Errorf("Timeout")
   case err := <-done:
      if err != nil {
         err = fmt.Errorf("call failed, err %v", err)
      }
      return err
   }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注