使用 Go 语言实现优雅的服务器重启(2)

timeout := time.NewTimer(time.Minute)wait := make(chan struct{})go func() {
  wg.Wait()
  wait <- struct{}{}}()select {case <-timeout.C:
  return WaitTimeoutErrorcase <-wait:
  return nil}

完整的示例

这篇文章中的代码片段都是从这个完整的示例中提取的:https://github.com/Scalingo/go-graceful-restart-example

结论

socket传递配合ForkExec使用确实是一种无干扰更新进程的有效方式,在最大时间上,新的连接会等待几毫秒——用于服务的启动和恢复socket,但这个时间很短。

这篇文章是我#周五技术系列的一部分,下这个周不会有新的更新了,大家圣诞节快乐。

链接:

— Léo Unbekandt CTO @ Appsdeck

Go 语言的依赖注入 

Go 语言开发工具 LiteIDE x24 发布下载

LiteIDE 开发工具指南 (Go语言开发工具)

Google Go语言搭建开发环境

Ubuntu 安装Go语言包

《Go语言编程》高清完整版电子书

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/26314cb42c7a16f2f60c1a8628ef01c3.html