美文网首页
GRPC双向流(Python)发完请求双向流就结束的问题

GRPC双向流(Python)发完请求双向流就结束的问题

作者: 西亭月圆 | 来源:发表于2022-07-06 17:49 被阅读0次

    对于异步双向流,请求迭代器完成迭代后,双向流就会结束,需要保持请求迭代器不结束,才能持续不断的接收消息,可设置特定条件时才停止请求迭代器

    参考这段描述(摘自  https://github.com/grpc/grpc/issues/25372)

    根据上述描述,可以设置一个stop_event,自己定义结束双向流的条件:


    def msg_generator(stop_event: threading.Event):

            for i in range(5):

                    msg = 'test message %s' % i

                    yield msg

            stop_event.wait()

    def stop_request_iteration(event: threading.Event):

            while True:

                    flag = input('是否结束(Y/N)?')

                    if flag == 'Y':

                            event.set()

                            break

    event = threading.Event()

    #  单独开一个线程,监听输入,若输入相应内容,则设置结束信号

    t = threading.Thread(target=stop_request_iteration, args=(event,))

    t.start()

    response_iter = msg_stub.SendMessage(msg_generator(event))

    for res in response_iter:

            print(res)


    结论:只要不结束请求迭代,就能一直保持双向流不结束。因此也可以使生成器不结束迭代,如以下生成器:

    def msg_gen():
            while True:

                    msg = input('输入消息内容(输入quit结束迭代):')

                    if msg == 'quit':

                            break

                    yield msg

    相关文章

      网友评论

          本文标题:GRPC双向流(Python)发完请求双向流就结束的问题

          本文链接:https://www.haomeiwen.com/subject/jvdybrtx.html