登录
首页 >  Golang >  Go问答

实现goroutines的重试机制的方法有哪些?

来源:stackoverflow

时间:2024-02-11 17:39:17 416浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《实现goroutines的重试机制的方法有哪些?》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

刚开始使用 goroutine;目前有一个非常简单的实现:

func someFunc() error {
  resp, err := httpClient.Post()
  if err != nil {
    log...
    return error
  }

  return nil
}

func flowA() {
  ...

  go someFunc()
}

我想要实现的是对 goroutine 管理的 func 内的 post 请求的不成功响应进行重试。不确定是否通过包装 somefunc() err 值来处理重试逻辑更好,或者是否有更惯用的方法来处理 goroutine 中返回的错误。


正确答案


实现重试机制的一种方法是这样,这里我最多重试n=5次,根据状态代码我们还可以检查仅当响应状态代码为4xx时才重试

func someFunc(maxRetry int) error {
      maxRetry = maxRetry - 1
      resp, err := httpClient.Post()
      if resp.StatusCode != http.StatusOK {
          if maxRetry > 0 {
            return someFunc(maxRetry)
          }
      }
        
      if err != nil {
        log...
        return error
      }
    
      return nil
    }
    
    func flowA() {
      ...
    
      go someFunc(5)
    }

以上就是《实现goroutines的重试机制的方法有哪些?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>