У меня есть 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
.Вызывается подключающимся клиентом.Код выше предполагает, что на данный момент есть только один клиент.Будет ли это работать?