午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

python golang中grpc 使用示例代碼詳解

瀏覽:16日期:2022-07-23 11:41:04

python

1、使用前準備,安裝這三個庫

pip install grpciopip install protobufpip install grpcio_tools

2、建立一個proto文件hello.proto

// [python quickstart](https://grpc.io/docs/quickstart/python.html#run-a-grpc-application)// python -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I. hello.proto// helloworld.protosyntax = 'proto3';package test;service Greeter { rpc SayHello(HelloRequest) returns (HelloReply) {} rpc SayHelloAgain(HelloRequest) returns (HelloReply) {}}service Greetera{ rpc SayStudent(Studentid) returns (Student){}}message Student { string msg=1;//json}message Studentid{ string id=1;}message HelloRequest { string name = 1;}message HelloReply { string message = 1;}

3、執行命令就會對應生成兩個py文件

hello_pb2.py

hello_pb2_grpc.py

python -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I. hello.proto

4、py服務端代碼hello.server.py:

from concurrent import futuresimport timeimport grpcimport hello_pb2import hello_pb2_grpcimport json# 實現 proto 文件中定義的 GreeterServicerclass Greeter(hello_pb2_grpc.GreeterServicer): # 實現 proto 文件中定義的 rpc 調用 def SayHello(self, request, context): return hello_pb2.HelloReply(message = ’hello {msg}’.format(msg = request.name)) def SayHelloAgain(self, request, context): return hello_pb2.HelloReply(message=’hello {msg}’.format(msg = request.name))class Gretera(hello_pb2_grpc.GreeteraServicer): def SayStudent(self,request,context): print(request.id) if request.id=='0': c=hello_pb2.Student(msg=json.dumps({'name':'owen','age':22,'sex':'男'})) else: c=hello_pb2.Student(msg=json.dumps({'name':'lihui','age':23,'sex':'女'})) return cdef serve(): # 啟動 rpc 服務 server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) hello_pb2_grpc.add_GreeterServicer_to_server(Greeter(), server) hello_pb2_grpc.add_GreeteraServicer_to_server(Gretera(),server) server.add_insecure_port(’[::]:50052’) server.start() try: while True: time.sleep(60*60*24) # one day in seconds except KeyboardInterrupt: server.stop(0)if __name__ == ’__main__’: serve()

py客戶端代碼hello.client.py:

import grpcimport hello_pb2import hello_pb2_grpcimport jsondef run(): # 連接 rpc 服務器 channel = grpc.insecure_channel(’localhost:50051’) # 調用 rpc 服務 stub = hello_pb2_grpc.GreeterStub(channel) response = stub.SayHello(hello_pb2.HelloRequest(name=’czl’)) print('Greeter client received: ' + response.message) response = stub.SayHelloAgain(hello_pb2.HelloRequest(name=’nsdnfkjda’)) print('Greeter client received: ' + response.message) stub1 = hello_pb2_grpc.GreeteraStub(channel) response1 = stub1.SayStudent(hello_pb2.Studentid(id=’1’)) print(json.loads(response1.msg))if __name__ == ’__main__’: run()

golang

由于grpc是跨語言的所以這里用golang做為示范,golang客戶端代碼,小編這里也踩了許多坑,最主要的是兩個proto文件一定要一致,golang 中使用必須安裝protoc,windows將環境變量指向安裝目錄的bin下面:

1、protocal buffer安裝

從 https://github.com/google/protobuf/releases 下載 對應自己的系統(環境變量記得改)

2、安裝 golang protobuf

go get -u github.com/golang/protobuf/proto // golang protobuf 庫go get -u github.com/golang/protobuf/protoc-gen-go //protoc --go_out 工具

3、安裝 gRPC-go

go get google.golang.org/grpc

4、生成go文件

protoc --go_out=plugins=grpc:文件目錄 對應的.proto文件protoc --go_out=plugins=grpc:. hello.proto

生成hello.pb.go,調用的實現hello_go_client.go:

package mainimport ( 'context' 'encoding/json' 'google.golang.org/grpc' 'log' 'student/test' //對應的生成文件目錄)type Studenmsg struct { Name string Age int Sex string}func main() { // 建立連接到gRPC服務 conn, err := grpc.Dial('127.0.0.1:50052', grpc.WithInsecure()) if err != nil { log.Fatalf('did not connect: %v', err) } // 函數結束時關閉連接 defer conn.Close() // 創建Waiter服務的客戶端 t := test.NewGreeteraClient(conn) tr,err:=t.SayStudent(context.Background(),&test.Studentid{Id:'1'}) if err != nil { log.Fatalf('could not greet: %v', err) } var st Studenmsg err=json.Unmarshal([]byte(tr.Msg),&st)//這里說明一下發過來的數據是json格式轉化成struct if err!=nil{ log.Println(err.Error()) } log.Println(st.Name,st.Age,st.Sex)}

總結

到此這篇關于python golang中grpc 使用示例代碼詳解的文章就介紹到這了,更多相關python golang grpc 使用內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 成人午夜av | 99青草| 久久精品国产免费 | h片视频| 国产日韩精品视频 | аⅴ天堂中文在线网 | 日韩精品一区二区三区在线观看 | 999精品在线 | 国产第8页 | jizz黄色| 久久影院午夜 | 搞黄视频在线观看 | 福利综合网 | 奇米网狠狠 | 欧美资源 | 青青操免费在线视频 | 日韩在线观看第一页 | 第一页在线观看 | 日女人的逼 | 农村少妇久久久久久久 | 欧美日韩www | a在线视频 | 国产日韩欧美91 | 四虎永久免费地址 | 1000部啪啪未满十八勿入超污 | 在线观看亚洲网站 | 黄色大片一级片 | 久久嫩草精品久久久久 | 日本一二三区在线观看 | 国产精品婷婷 | 视频一区二区三区在线观看 | 午夜成人免费影院 | 久久青草视频 | 亚洲视频一区在线 | 深夜视频在线免费观看 | 亚洲无av在线中文字幕 | 国产一区视频在线 | 九色在线视频 | 日韩三级中文字幕 | 色吧综合网 | 日韩视频专区 |