首页 > 解决方案 > 为 GRPC 流式处理端点翻转 Python 生成器

问题描述

我有一个 GRPC 服务器,可以将项目流回客户端。然而,这些项目的生成也取决于异步事件和各种东西。所以我想允许其他组件调用grpc组件,通过调用将数据传递给客户端。然后数据被发送到打开的 grpc 连接。

这就是我所拥有的:

class SubmitService(ptac_grpc.SubmitServiceServicer):
    _order_gen: Generator = None

    def sendOrder(self, msg: ptac_pb2.PBOrder):
        if SubmitService._order_gen is not None:
            SubmitService._order_gen.send(msg)
        else:
            log.error("could not send order to server, no generator present")


    def getOrders(self, request, context):
        """DO NOT CALL from python. This is the API to the adapter"""
        SubmitService._order_gen = self._inside_out_gen()
        for msg in SubmitService._order_gen:
            yield msg

    def _inside_out_gen(self) -> Generator:
        while True:
            #turning a generator inside out
            yield (yield)

我的 GRPC 端点称为getOrders. 它由连接的客户端调用。上面的代码假设现在只有一个客户端。它会起作用吗?

标签: pythonstreamgeneratorgrpc

解决方案


推荐阅读