Installieren Sie Folgendes auf Ihrem Mac
$ brew install protobuf
$ pip install grpcio-tools
Bereiten Sie eine Protodatei vor
hoge.proto
syntax = "proto3";
package gateway;
message ReplyRequest {
string message = 1;
}
message ReplyResponse {
string message = 1;
}
service AVRGateway {
rpc Reply (ReplyRequest) returns (ReplyResponse) {}
}
Schreiben Sie Protokolleinstellungen als zu generierende Datei
codegen.py
from grpc.tools import protoc
protoc.main(
(
'',
'-I.',
'--python_out=.',
'--grpc_python_out=.',
'./hoge.proto',
)
)
Führen Sie die oben erstellte Datei "codegen.py" aus.
$ python ./codegen.py
Erstellen Sie eine Py-Datei für den Server
grpc_server.py
from concurrent import futures
import time
import grpc
from hoge_pb2 import ReplyResponse
from hoge_pb2_grpc import AVRGatewayServicer
from hoge_pb2_grpc import add_AVRGatewayServicer_to_server
_ONE_DAY_IN_SECONDS = 60 * 60 * 24
class RouteGuideServicer(AVRGatewayServicer):
def Reply(self, request, context):
print('reply!')
return ReplyResponse(message='Hoge')
def serve():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
add_AVRGatewayServicer_to_server(
RouteGuideServicer(), server)
server.add_insecure_port('[::]:50051')
server.start()
try:
while True:
time.sleep(_ONE_DAY_IN_SECONDS)
except KeyboardInterrupt:
server.stop(0)
if __name__ == '__main__':
serve()
Erstellen Sie auf der Clientseite eine Py-Datei
stub.py
from __future__ import print_function
import grpc
import hoge_pb2
import hoge_pb2_grpc
def run():
channel = grpc.insecure_channel('localhost:50051')
stub = hoge_pb2_grpc.AVRGatewayStub(channel)
response = stub.Reply(hoge_pb2.ReplyRequest(message='hoge'))
print("Greeter client received: " + response.message)
if __name__ == '__main__':
run()
Lassen Sie uns Client nach Server ausführen
https://blog.fenrir-inc.com/jp/2016/10/grpc-go.html
Recommended Posts