Как эффективно отправить обратно данные с сервера на клиент с помощью Python GRPC - PullRequest
0 голосов
/ 21 октября 2018

Я хотел бы знать, есть ли рекомендуемый способ вернуть данные обратно с сервера клиенту в 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 это не представляется возможным сделать эффективно.Я действительно надеюсь, что что-то упустил.

Кроме того, сервер в настоящее время принимает данные от клиента, добавляет их в очередь и затем возвращает их обратно клиенту (без какой-либо обработки).Опять же, с кодом выше, моя производительность резко падает даже без какой-либо обработки!

Спасибо, Майк

...