Replies: 1 comment 1 reply
-
Hi @jake-bcn! I'm Dosu and I’m helping the kratos team. 這個 30 分鐘自動關閉地址更新的問題,確實是因為 gRPC v1.67.1 的核心 idleTimeout 參數預設為 30 分鐘。Kratos 的 grpc.DialInsecure 會把你用 grpc.WithOptions 傳入的 goGrpc.WithIdleTimeout(0) 直接傳給底層 gRPC client,這樣就能關閉 idleTimeout,讓連線不會因為閒置 30 分鐘而自動關閉,服務地址也能持續更新。 Kratos 的 clientOptions 結構有 grpcOpts 欄位,所有 grpc.DialOption(包含 goGrpc.WithIdleTimeout(0))都會被收集並傳給 grpc.DialContext,Kratos 不會攔截或修改這些選項,所以這個解法是正確的,完全符合 gRPC 官方的設計邏輯。你可以參考 Kratos 的 client.go 實作細節 來確認這個行為。 目前 Kratos 社群和 pull request 沒有特別針對這個 idleTimeout 問題做過討論或修正,所以你的處理方式是推薦且正確的。 To reply, just mention @dosu. How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
問題: 新版本, 下面代碼的 grpc client, 會遇到 30分鐘后 自動關閉 更新服務地址的請求,
原因是: C:\Users\jake.tse\go\pkg\mod\google.golang.org\[email protected]\dialoptions.go grpc 核心的default 參數變化了, idleTimeout 變成 30 mins了
解決辦法: 添加超時時間為 0, grpc.WithOptions(goGrpc.WithIdleTimeout(0)),
Beta Was this translation helpful? Give feedback.
All reactions