|
- from concurrent.futures import ThreadPoolExecutor
-
- import grpc
- import calculator_pb2 as stub
- import calculator_pb2_grpc as service
-
- import math
-
- SERVER_ADDR = '0.0.0.0:1234'
-
- class Calculator(service.CalculatorServicer):
- def Add(self, request, context):
- a = request.a
- b = request.b
- print(f'Add({a}, {b})')
- return stub.FloatResponse(ans=a+b)
-
- def Substract(self, request, context):
- a = request.a
- b = request.b
- print(f'Substract({a}, {b})')
- return stub.FloatResponse(ans=a-b)
-
- def Multiply(self, request, context):
- a = request.a
- b = request.b
- print(f'Multiply({a}, {b})')
- return stub.FloatResponse(ans=a*b)
-
- def Divide(self, request, context):
- a = request.a
- b = request.b
- print(f'Divide({a}, {b})')
- try:
- return stub.FloatResponse(ans=a/b)
- except Exception as e:
- return stub.FloatResponse(ans=math.nan)
-
-
- if __name__ == '__main__':
- try:
- server = grpc.server(ThreadPoolExecutor(max_workers=30))
- service.add_CalculatorServicer_to_server(Calculator(), server)
- server.add_insecure_port(SERVER_ADDR)
- server.start()
- print(f'listening on {SERVER_ADDR}')
- server.wait_for_termination()
- except KeyboardInterrupt:
- print('Interrupted by user. Shutting down...')
|