第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如果服務(wù)器在客戶端的 gRPC 中不可用,等待的方法

如果服務(wù)器在客戶端的 gRPC 中不可用,等待的方法

Go
守著一只汪 2023-01-03 17:21:59
我希望讀這篇文章的人都過(guò)得很好。這是我想知道的一個(gè)場(chǎng)景:有一個(gè)全局 ClientConn 用于對(duì)服務(wù)器的所有 grpc 請(qǐng)求。然后那個(gè)服務(wù)器宕機(jī)了。我想知道是否有一種方法可以等待此服務(wù)器超時(shí),以便在這種情況下使用 grpc 對(duì)故障(瞬態(tài)故障或服務(wù)器停機(jī))更具彈性。我在想,如果 clientConn 狀態(tài)正在連接或暫時(shí)性故障,并且如果在 clientConn 狀態(tài)是暫時(shí)性故障時(shí)發(fā)生超時(shí),則繼續(xù)循環(huán),然后返回錯(cuò)誤,因?yàn)榉?wù)器可能已關(guān)閉。我想知道如果客戶端有多個(gè)請(qǐng)求需要這個(gè) ClientConn 那么這是否可行,那么多個(gè) go 例程將運(yùn)行這個(gè)循環(huán)。將不勝感激任何其他選擇、建議或忠告。
查看完整描述

1 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

當(dāng)您調(diào)用grpc.Dial連接到服務(wù)器并收到一個(gè)grpc.ClientConn時(shí),它會(huì)自動(dòng)為您處理重新連接。當(dāng)您調(diào)用方法或請(qǐng)求流時(shí),如果無(wú)法連接到服務(wù)器或處理請(qǐng)求時(shí)出錯(cuò),它將失敗。

如果錯(cuò)誤表明是網(wǎng)絡(luò)問(wèn)題,您可以重試幾次。您可以在此處查看 grpc 狀態(tài)代碼https://github.com/grpc/grpc-go/blob/master/codes/codes.go#L31并使用以下方法從返回的錯(cuò)誤中提取它們status.FromErrorhttps://pkg.go .dev/google.golang.org/grpc/status#FromError

您還可以grpc.WaitForReady選擇 ( https://pkg.go.dev/google.golang.org/grpc#WaitForReady ),如果它處于暫時(shí)性故障,可用于阻止 grpc 調(diào)用,直到服務(wù)器準(zhǔn)備就緒。在那種情況下,您不需要重試,但您可能應(yīng)該添加一個(gè)超時(shí)來(lái)取消上下文以控制您保持阻塞的時(shí)間。

如果您甚至想避免嘗試調(diào)用服務(wù)器,您可以使用ClientConn.WaitForStateChange(這是實(shí)驗(yàn)性的)來(lái)檢測(cè)任何狀態(tài)更改并調(diào)用ClientConn.GetState以確定連接處于什么狀態(tài),以了解何時(shí)可以安全地再次開(kāi)始調(diào)用服務(wù)器。


查看完整回答
反對(duì) 回復(fù) 2023-01-03
  • 1 回答
  • 0 關(guān)注
  • 286 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)