def Calc(self, request, ctx): if request.n <= 0: ctx.set_code(grpc.StatusCode.INVALID_ARGUMENT) ctx.set_details("request number should be positive") return pi_pb2.PiResponse() s = 0.0 for i in range(request.n): s += 1.0 / (2 * i + 1) / (2 * i + 1) return pi_pb2.PiResponse(value=math.sqrt(8 * s))
def Calc(self, request, ctx): if request.n <= 0: ctx.set_code(grpc.StatusCode.INVALID_ARGUMENT) # 参数错误 # ctx.set_details("request number should be positive") # 错误具体说明 # ctx.set_details(json.dumps({"biz_err_code": 10086, "msg": "something happened"})) ctx.send_initial_metadata([("biz_err_code", "10086"), ("msg", "something happened")]) return pi_pb2.PiResponse() s = 0.0 for i in range(request.n): s += 1.0/(2*i+1)/(2*i+1) return pi_pb2.PiResponse(value=math.sqrt(8*s))
def Calc(self, request_iterator, ctx): for request in request_iterator: if random.randint(0, 1) == 1: continue s = 0.0 for i in range(request.n): s += 1.0 / (2 * i + 1)**2 yield pi_pb2.PiResponse(n=i, value=math.sqrt(8 * s))
def Calc(self, request, context): """计算圆周率的逻辑 """ time.sleep(0.01) s = 0.0 for i in range(request.n): s += 1.0 / (2 * i + 1) / (2 * i + 1) return pi_pb2.PiResponse(value=math.sqrt(8 * s))
def Calc(self, request_iterator, ctx): # request 是一个迭代器参数,对应的是一个 stream 请求 for request in request_iterator: # 50% 的概率会有响应 if random.randint(0, 1) == 1: continue s = 0.0 for i in range(request.n): s += 1.0 / (2 * i + 1) / (2 * i + 1) # 响应是一个生成器,一个响应对应对应一个请求 yield pi_pb2.PiResponse(n=i, value=math.sqrt(8 * s))
def Calc(self, request_iterator, context): # request是一个迭代器参数,对应一个stream请求 for request in request_iterator: # if request.n < 0: # context.set_code(grpc.StatusCode.INVALID_ARGUMENT) # 参数错误 # context.set_details('request number should be positive') # 错误具体说明 # yield pi_pb2.PiResponse() # 50% 的概率会有响应 # if random.randint(0, 1) == 1: # continue s = 0.0 for i in range(request.n): s += 1.0 / (2 * i + 1) / (2 * i + 1) # 响应是一个生成器,一个响应对应一个请求 context.set_code(grpc.StatusCode.OK) yield pi_pb2.PiResponse(n=i, value=math.sqrt(8 * s))
def Calc(self, request, ctx): s = 0.0 for i in range(request.n): s += 1.0 / (2 * i + 1) / (2 * i + 1) return pi_pb2.PiResponse(value=math.sqrt(s * 8))
def Calc(self, request, ctx): time.sleep(1) s = 0.0 for i in range(request.n): s += 1.0 / (2 * i + 1) / (2 * i + 1) return pi_pb2.PiResponse(value=math.sqrt(8 * s))