2 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個(gè)贊
我們有示例 Go 代碼,用于在 https://github.com/GoogleCloudPlatform/golang-samples/pull/1902 正確處理信號(hào)。它尚未合并,但實(shí)質(zhì)上突出了如何在Go上正確執(zhí)行此操作。
請(qǐng)注意,在本地運(yùn)行時(shí),將Ctrl+C發(fā)送到您的應(yīng)用程序是SIGINT,但是在Cloud Run上,您將獲得SIGTERM。同樣重要的是,要正確傳遞取消并優(yōu)雅地處理服務(wù)器關(guān)閉,同時(shí)不丟棄正在進(jìn)行的請(qǐng)求(但是,正如您將在示例代碼中看到的那樣,它會(huì)為您處理其中的很大一部分)。net/http.Server

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
在Golang中如何做到這一點(diǎn)?
處理 Go 中正常關(guān)閉的一種慣用方法是使用一個(gè)語(yǔ)句來(lái)阻止主 goroutine 偵聽(tīng)任何信號(hào)。從那里,您可以在必要時(shí)觸發(fā)所有正確的關(guān)機(jī)。select
例如:
select {
case err := <-anyOtherError:
// ...
case signal := <- c:
// Handle shutdown e.g. like http Server Shutdown
}
我喜歡在函數(shù)中設(shè)置它,并執(zhí)行其他啟動(dòng)任務(wù),例如啟動(dòng)服務(wù)器,配置等。run
- 2 回答
- 0 關(guān)注
- 155 瀏覽
添加回答
舉報(bào)