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

云运行时的正常关闭

云运行时的正常关闭

Go
慕无忌1623718 2022-08-24 09:36:29
我指的是这篇文章:云运行时的正常关闭该示例概述了如何在 Node.js 中执行此操作。在Golang中如何做到这一点?简单地将其添加到方法中是否有任何问题?func init()func shutdownGracefully() {    c := make(chan os.Signal)    signal.Notify(c, os.Interrupt, syscall.SIGTERM)    go func() {        <-c        // Do some cleanup stuff here...        os.Exit(0)    }()}
查看完整描述

2 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

我们有示例 Go 代码,用于在 https://github.com/GoogleCloudPlatform/golang-samples/pull/1902 正确处理信号。它尚未合并,但实质上突出了如何在Go上正确执行此操作。

请注意,在本地运行时,将Ctrl+C发送到您的应用程序是SIGINT,但是在Cloud Run上,您将获得SIGTERM。同样重要的是,要正确传递取消并优雅地处理服务器关闭,同时不丢弃正在进行的请求(但是,正如您将在示例代码中看到的那样,它会为您处理其中的很大一部分)。net/http.Server


查看完整回答
反对 回复 2022-08-24
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

在Golang中如何做到这一点?


处理 Go 中正常关闭的一种惯用方法是使用一个语句来阻止主 goroutine 侦听任何信号。从那里,您可以在必要时触发所有正确的关机。select


例如:


select {

case err := <-anyOtherError:

    // ...

case signal := <- c:

    // Handle shutdown e.g. like http Server Shutdown

}

我喜欢在函数中设置它,并执行其他启动任务,例如启动服务器,配置等。run


查看完整回答
反对 回复 2022-08-24
  • 2 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

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