取得 RPC 描述符失敗
php小編草莓今天為大家介紹一個常見問題:在進行遠端過程呼叫(RPC)時,可能會遇到「取得 RPC 描述符失敗」的錯誤。這個錯誤通常意味著客戶端無法與伺服器建立有效的連接,可能是由於網路問題、服務端配置錯誤或權限問題所導致。在本文中,我們將詳細解釋這個錯誤的原因,並提供一些解決方案來解決這個問題。無論您是初學者還是有經驗的開發人員,都將從本文中獲得有關解決「獲取 RPC 描述符失敗」錯誤的有用資訊。
問題內容
我有以下原型檔案:
service_myservice.proto
service MyService { rpc GetData(GetRequest) returns (GetResponse) {} }
伺服器.go
type Server struct { pb.UnimplementedMyServiceServer config util.Config } // NewServer creates a new gRPC server. func NewServer(config util.Config) (*Server, error) { server := &Server{ config: config, } return server, nil }
然後在主包中我呼叫這個函數
func runGrpcServer(config util.Config) { server, err := gapi.NewServer(config) if err != nil { log.Fatal().Err(err).Msg("cannot create server") } grpcLogger := grpc.UnaryInterceptor(gapi.GrpcLogger) grpcServer := grpc.NewServer(grpcLogger) pb.RegisterMyServiceServer(grpcServer, server) reflection.Register(grpcServer) listener, err := net.Listen("tcp", config.GRPCServerAddress) if err != nil { log.Fatal().Err(err).Msg("cannot create listener") } log.Info().Msgf("start gRPC server at %s", listener.Addr().String()) err = grpcServer.Serve(listener) if err != nil { log.Fatal().Err(err).Msg("cannot start gRPC server") } }
我正在使用 evans (https://github.com/ktr0731/evans) 來測試我的 grpc 呼叫。 我的 gRPC 伺服器正在運行,我可以使用 evans 連接到特定連接埠 (9090) 上的本機。
但是,當我在埃文斯中呼叫 show service
時,我得到以下回應:
localhost:9090> show service +---------+-----+--------------+---------------+ | SERVICE | RPC | REQUEST TYPE | RESPONSE TYPE | +---------+-----+--------------+---------------+ +---------+-----+--------------+---------------+ localhost:9090> call GetData command call: failed to get the RPC descriptor for: GetData: service unselected
我認為如果我在 Server
結構中新增 pb.UnimplementedMyServiceServer
,那麼這是向前相容的。但顯然,我缺少一些程式碼。
為了讓 MyService
向前相容,缺少哪個部分?
解決方法
REPL模式下使用evans時,呼叫show service
前應選擇包,呼叫call GetData
前應選擇服務。
localhost:9090> show package +-------------------------+ | PACKAGE | +-------------------------+ | example | | grpc.reflection.v1 | | grpc.reflection.v1alpha | +-------------------------+ localhost:9090> package example example@localhost:9090> show service +-----------+---------+--------------+---------------+ | SERVICE | RPC | REQUEST TYPE | RESPONSE TYPE | +-----------+---------+--------------+---------------+ | MyService | GetData | GetRequest | GetResponse | +-----------+---------+--------------+---------------+ example@localhost:9090> service MyService example.MyService@localhost:9090> call GetData id (TYPE_INT32) => 1
以上是取得 RPC 描述符失敗的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

無法註冊BitgetWallet交易所的原因有很多種,包括帳戶限制、不支援的地區、網路問題、系統維護和技術故障。要註冊BitgetWallet交易所,請造訪官方網站、填寫資訊、同意條款、完成註冊並驗證身分。

登入OKX無法收到驗證碼的原因包括:網路問題、手機設定問題、簡訊服務中斷、伺服器繁忙和驗證碼請求限制。解決方案依序為:等待重試、切換網路、聯絡客服。

無法登入MEXC(抹茶)網站的原因可能是網路問題、網站維護、瀏覽器問題、帳戶問題或其他原因。解決步驟包括:檢查網路連線、查看網站公告、更新瀏覽器、檢查登入憑證以及聯絡客服團隊。

問題介紹在使用PHP調用支付寶EasySDK時,按照官方提供的代碼填入參數後,運行過程中遇到報錯信息“Undefined...

Gate.io芝麻開門易所官方網站無法登入的原因包括:網路問題、網站維護、瀏覽器問題、安全設定等。解決方案依序為:檢查網路連線、等待維護結束、清除瀏覽器快取、停用插件、檢查安全設定、聯絡客服。

無法收到歐易OKEx登入驗證碼的原因及解決方法:1.網路問題:檢查網路連線或切換網路;2.手機設定:開啟簡訊接收或將歐易OKEx列入白名單;3.驗證碼傳送限制:稍後再試或聯絡客服;4.伺服器擁擠:高峰期稍後再試或使用其他登入方式;5.帳號凍結:聯絡客服解決。其他方法:1.語音驗證碼;2.第三方驗證碼平台;3.聯絡客服。

Oracle 打不開的解決辦法包括:1. 啟動數據庫服務;2. 啟動監聽器;3. 檢查端口衝突;4. 正確設置環境變量;5. 確保防火牆或防病毒軟件未阻止連接;6. 檢查服務器是否已關閉;7. 使用 RMAN 恢復損壞的文件;8. 檢查 TNS 服務名稱是否正確;9. 檢查網絡連接;10. 重新安裝 Oracle 軟件。

歐易Okex交易平台無法存取的原因包含:網路問題、網站故障、瀏覽器問題、平台故障、其他因素。解決方法包括:檢查網路、清除瀏覽器快取、更新瀏覽器、停用外掛程式、更換裝置、聯絡客服。
