首页 > 解决方案 > 如何在gRPC Python中实现消息接收的服务器端双向流超时?

问题描述

客户端向 grpc 服务中双向流的 Hello 方法发送消息。
服务器接收来自客户端的消息并回复 HelloReply()。

这是我想做的:如果服务器在 2 秒内没有收到来自客户端的任何消息,则中止连接。
我尝试使用以下代码来做到这一点,但不起作用......

需要帮助,谢谢。

class ServerServicer(service_pb2_grpc.HelloServicer):
    def Hello(self, request_iterator, context: grpc.ServicerContext):
        try:
        #     message_receive_time = time.time()
        #     def timeout():
        #         while True:
        #             if time.time() - message_receive_time > 2:
        #                 context.abort(grpc.StatusCode.DEADLINE_EXCEEDED, 'RPC Time Out!')
        #     timeout_task = threading.Thread(target=timeout)
        #     timeout_task.start()
            for request in request_iterator:
                message_receive_time = time.time()
                yield service_pb2.HelloReply()
        except Exception as error:
            traceback.print_exc()
        # timeout_task.close()

标签: grpc-python

解决方案


推荐阅读