Working on a python example plus fixing python grpc code (#6456)

Refactored python grpc code gen

Adds example server & client + fixes ci

Fixes generated code

Making sure we encode the reply string as utf8

Adds Readme details to clarify issue regarding encoding when python is sending/receiving
This commit is contained in:
mustiikhalil
2021-02-26 01:38:12 +03:00
committed by GitHub
parent c0be1cb7a5
commit 8142fedd19
15 changed files with 443 additions and 692 deletions

View File

@@ -0,0 +1,57 @@
from concurrent import futures
import sys
import argparse
import grpc
sys.path.insert(0, '../../../../../flatbuffers/python')
import flatbuffers
from models import HelloReply, HelloRequest, greeter_grpc_fb
parser = argparse.ArgumentParser()
parser.add_argument("port", help="server on port", default=3000)
def build_reply(message):
builder = flatbuffers.Builder()
ind = builder.CreateString(message)
HelloReply.HelloReplyStart(builder)
HelloReply.HelloReplyAddMessage(builder, ind)
root = HelloReply.HelloReplyEnd(builder)
builder.Finish(root)
return bytes(builder.Output())
class GreeterServicer(greeter_grpc_fb.GreeterServicer):
def __init__(self):
self.greetings = ["Hi", "Hallo", "Ciao"]
def SayHello(self, request, context):
r = HelloRequest.HelloRequest().GetRootAs(request, 0)
reply = "Unknown"
if r.Name():
reply = r.Name()
return build_reply("welcome " + reply.decode('UTF-8'))
def SayManyHellos(self, request, context):
r = HelloRequest.HelloRequest().GetRootAs(request, 0)
reply = "Unknown"
if r.Name():
reply = r.Name()
for greeting in self.greetings:
print(type(reply))
yield build_reply(greeting + " " + reply.decode('UTF-8'))
def serve():
args = parser.parse_args()
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
greeter_grpc_fb.add_GreeterServicer_to_server(
GreeterServicer(), server
)
server.add_insecure_port('[::]:' + args.port)
server.start()
server.wait_for_termination()
if __name__ == '__main__':
serve()