...
1from concurrent import futures
2import sys
3import argparse
4import grpc
5
6sys.path.insert(0, '../../../../../flatbuffers/python')
7
8import flatbuffers
9from models import HelloReply, HelloRequest, greeter_grpc_fb
10
11parser = argparse.ArgumentParser()
12parser.add_argument("port", help="server on port", default=3000)
13
14def build_reply(message):
15 builder = flatbuffers.Builder()
16 ind = builder.CreateString(message)
17 HelloReply.HelloReplyStart(builder)
18 HelloReply.HelloReplyAddMessage(builder, ind)
19 root = HelloReply.HelloReplyEnd(builder)
20 builder.Finish(root)
21 return bytes(builder.Output())
22
23class GreeterServicer(greeter_grpc_fb.GreeterServicer):
24
25 def __init__(self):
26 self.greetings = ["Hi", "Hallo", "Ciao"]
27
28 def SayHello(self, request, context):
29 r = HelloRequest.HelloRequest().GetRootAs(request, 0)
30 reply = "Unknown"
31 if r.Name():
32 reply = r.Name()
33 return build_reply("welcome " + reply.decode('UTF-8'))
34
35 def SayManyHellos(self, request, context):
36 r = HelloRequest.HelloRequest().GetRootAs(request, 0)
37 reply = "Unknown"
38 if r.Name():
39 reply = r.Name()
40
41 for greeting in self.greetings:
42 print(type(reply))
43 yield build_reply(greeting + " " + reply.decode('UTF-8'))
44
45
46def serve():
47 args = parser.parse_args()
48 server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
49 greeter_grpc_fb.add_GreeterServicer_to_server(
50 GreeterServicer(), server
51 )
52 server.add_insecure_port('[::]:' + args.port)
53 server.start()
54 server.wait_for_termination()
55
56if __name__ == '__main__':
57 serve()
View as plain text