golang gin 协程 安全退出

问题:go程序热重启时 协程怎么安全退出?

热重启方案

目前已经压测热重启验证 不会发生http 502的情况 但协程那块会有数据丢失

示例代码:

func main()  {
    //逻辑....
    data := map[string]string{
        "go":"协程",
    }
    go asyncToDb(data)
}

func asyncToDb(data map[string]string)  {
    // TODO 入库 日志记录6000个 但成功入库少于6000(没db错误)
}
阅读 3.6k
1 个回答

如果你这个协程是http的路由处理函数,那Shutdown就会等待其完成的。
如果不是,那你需要加一个waitGroup,在父进程退出前等待。直到全部写入完成

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题