猿问

云运行时的正常关闭

我指的是这篇文章:云运行时的正常关闭

该示例概述了如何在 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)

    }()

}


慕无忌1623718
浏览 126回答 2
2回答

翻阅古今

我们有示例 Go 代码,用于在 https://github.com/GoogleCloudPlatform/golang-samples/pull/1902&nbsp;正确处理信号。它尚未合并,但实质上突出了如何在Go上正确执行此操作。请注意,在本地运行时,将Ctrl+C发送到您的应用程序是SIGINT,但是在Cloud Run上,您将获得SIGTERM。同样重要的是,要正确传递取消并优雅地处理服务器关闭,同时不丢弃正在进行的请求(但是,正如您将在示例代码中看到的那样,它会为您处理其中的很大一部分)。net/http.Server

明月笑刀无情

在Golang中如何做到这一点?处理 Go 中正常关闭的一种惯用方法是使用一个语句来阻止主 goroutine 侦听任何信号。从那里,您可以在必要时触发所有正确的关机。select例如:select {case err := <-anyOtherError:&nbsp; &nbsp; // ...case signal := <- c:&nbsp; &nbsp; // Handle shutdown e.g. like http Server Shutdown}我喜欢在函数中设置它,并执行其他启动任务,例如启动服务器,配置等。run
随时随地看视频慕课网APP

相关分类

Go
我要回答