Я пытаюсь получить поток с какого-то сервера GRPC, код которого мне не доступен.
Вот код моего клиента GRPC:
class Client():
def __init__ (self, grpcIP, grpcPort, params):
self.channel = grpc.insecure_channel('%s:%d' % (grpcIP, grpcPort))
grpc.channel_ready_future(self.channel).result()
self.stub = pb2_grpc.DataCloneStub(self.channel)
self.params = params
self.host = grpcIP
def StartSender(self):
params = pb2.StartParameters(**self.params)
try:
res = self.stub.Start(params)
print(type(res))
for pr in res:
print(pr.current_progress)
except grpc.RpcError as e:
print(e)
Вот фрагменты из файла прото, который используется.Метод:
rpc Start (StartParameters) returns (stream Progress) {}
Сообщение в потоке:
message Progress {
double current_progress = 1;
uint64 total_sent = 2;
uint64 total_size = 3;
string file_name = 4;
Error error = 5;
}
Как я понимаю, self.stub.Start (params) должен возвращать итератор с объектами типа Progress.Проблема в том, что он возвращает что-то с типом grpc._channel._Rendezvous.Я не могу перебрать ответ.Он также не улавливает никаких исключений.
Кто-то испытывал такое поведение?Возможно ли, что проблема исходит не со стороны клиента?