Я хотел бы знать, есть ли рекомендуемый способ вернуть данные обратно с сервера клиенту в GRPC python.
В настоящее время у меня есть вызов RPC выделенного сервера, который блокирует каждый клиентский вызов - он зацикливается на очереди данных (которая блокируется, когда пусто) для получения данных и отправляет их обратно клиенту. сервер реализация этого вызова:
def GetData(self, request, context):
while self._is_initialized:
data = self._processed_data_queue.get()
yield data
print 'client out'
Это кажется очень неловким, не масштабируемым и, очевидно, замедляет связь.В реализациях NodeJS, C #, c ++ это сделать гораздо проще.Но с реализацией Python это не представляется возможным сделать эффективно.Я действительно надеюсь, что что-то упустил.
Кроме того, сервер в настоящее время принимает данные от клиента, добавляет их в очередь и затем возвращает их обратно клиенту (без какой-либо обработки).Опять же, с кодом выше, моя производительность резко падает даже без какой-либо обработки!
Спасибо, Майк