...

Text file src/github.com/google/flatbuffers/grpc/examples/python/greeter/server.py

Documentation: github.com/google/flatbuffers/grpc/examples/python/greeter

     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