日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rpc error: code = Unimplemented desc =

發(fā)布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rpc error: code = Unimplemented desc = 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

grpc 版本

在 go 語言場景下使用 grpc,編譯 ok,運行的時候報錯。
grpc 版本:1.40.0
go version: go1.16.10 linux/amd64

運行報錯提示

"rpc error: code = Unimplemented desc ="

運行錯誤截圖如下:

結(jié)論先行

引起上述錯誤的主要原因是自定義的 proto 文件中 package 的名字和代碼中的 import 中的 package 名稱不一致才導致的問題。
因此檢查自定義的 proto 文件以及代碼中引用(import)的文件名稱,將二者改為一致即可。


后續(xù)的內(nèi)容只是簡單記錄下發(fā)現(xiàn)錯誤過程而已。感興趣的可以繼續(xù)閱讀。

錯誤調(diào)查

查看 proto 文件

package mypai; option go_package = "./;mypai";service mygrpc{rpc MyTestGrpcFunction(EmptyReq) returns (MyActiveTable) {} }message EmptyReq{} message MyActiveTable {repeated string idList = 1; }

grpcClient 部分代碼

報錯的位置是第 27 行處,其他部分代碼截圖如下:

3 import (4 "fmt"5 myapi "mycodes/egrpcProtoc/test"6 "time"7 "errors"8 )...........25 func TestMyTestGrpcFunction(req *myapi.EmptyReq) (resp *myapi.MyActiveTable) {26 if resp, err = grpcClient.MyTestGrpcFunction(req); err != nil {27 log.Logger.Error(err)28 }29 } else {30 log.Logger.Error(err)31 }32 return resp33 }

使用 grpc 工具生成的 *.pb.go 部分代碼

3 package mypai...........72 type GrpcClient interface {73 MyTestGrpcFunction(in *EmptyRequest, opts ...grpc.CallOption) (*MyActiveTable, error)74 }...........78 func (c *grpcClient ) MyTestGrpcFunction(in *EmptyRequest, opts ...grpc.CallOption) (*MyActiveTable, error) {79 out := new(MyActiveTable)80 err := c.cc.Invoke(ctx, "/mypai_communication.myapi/MyTestGrpcFunction", in, out, opts...)81 if err != nil {82 return nil, err83 }84 return out, nil85 }...........112 type GrpcClient interface { 113 MyTestGrpcFunction(*EmptyRequest) (*MyActiveTable, error) 114 }...........123 func (*UnimplementedMypaiServer) MyTestGrpcFunction(*EmptyRequest) (*MyActiveTable, error) { 124 return nil, status.Errorf(codes.Unimplemented, "method MyTestGrpcFunctionnot implemented") 125 }

發(fā)現(xiàn)問題

截至此處,基本可以上可以確定代碼問題所在,因為明顯在自定義的 proto 中是定義有 MyTestGrpcFunction 接口方法的,但是運行卻報錯 Unimplemented ,再次 check 代碼發(fā)現(xiàn)是 package 名稱,在自定義的 proto 中是 mypai ,但是在代碼使用中卻用的是 myapi ,可以很明顯的看出是不一樣的。

參考

Error handling

總結(jié)

以上是生活随笔為你收集整理的rpc error: code = Unimplemented desc =的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。