首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >云运行的优雅关闭

云运行的优雅关闭
EN

Stack Overflow用户
提问于 2021-03-29 13:05:41
回答 2查看 332关注 0票数 0

我指的是这篇文章:云运行的优雅关闭

该示例概述了如何在Node.js中执行此操作。

在戈朗怎么能做到这一点?简单地将它添加到func init()方法中有什么问题吗?

代码语言:javascript
复制
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)
    }()
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-29 19:18:00

我们在https://github.com/GoogleCloudPlatform/golang-samples/pull/1902有适当的信号处理的示例Go代码。它还没有被合并,但本质上强调了如何在Go中正确地完成这个任务。

请注意,在本地运行时,向应用程序发送Ctrl+C是一个SIGINT,但是在云运行时,您将得到SIGTERM。同样重要的是,在不删除正在进行的请求的同时,正确地传递取消并优雅地处理服务器关机(不过,正如您将在示例代码中看到的那样,net/http.Server为您处理了相当大的一部分)。

票数 2
EN

Stack Overflow用户

发布于 2021-03-29 14:44:59

在戈朗怎么能做到这一点?

在go中处理优雅关闭的一种惯用方法是让一个select语句阻塞主要的goroutine,侦听任何信号。从那里,您可以触发所有适当的关闭时,必要。

例如:

代码语言:javascript
复制
select {
case err := <-anyOtherError:
    // ...
case signal := <- c:
    // Handle shutdown e.g. like http Server Shutdown
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66854761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档