为GRPC流媒体端点翻转Python生成器

2024-04-23 06:04:26 发布

您现在位置: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。它由连接客户端调用。上面的代码假设目前只有一个客户机。能用吗?在


Tags: 数据selfgrpc客户机def组件ordermsg