Чанкинг в gRPC с Python - PullRequest
       17

Чанкинг в gRPC с Python

0 голосов
/ 21 января 2019

Может ли кто-нибудь поделиться любым кодом Python-сервера и клиента, который демонстрирует использование чанкинга в gRPC, аналогично https://jbrandhorst.com/post/grpc-binary-blob-stream/? Спасибо.

1 Ответ

0 голосов
/ 23 января 2019

Вот версия Chunker для Python gRPC.Основная логика чанкинга в сервисере реализована с помощью генератора Python.

# server.py
_CHUNKER_SIZE = 4
_DATA_TO_SEND = 'Hello gRPC Python World!'

def _chunk_bytes(data, chunker_size):
    index = 0
    while index < len(data):
        yield chunker_pb2.Chunk(
            chunk=data[index:index+chunker_size]
        )
        index += chunker_size


class Chunker(chunker_pb2_grpc.ChunkerServicer):

    @staticmethod
    def Chunker(request, unused_context):
        return _chunk_bytes(
            _DATA_TO_SEND,
            _CHUNKER_SIZE)

Клиентская сторона проста.Он получает ответы и объединяет их.

with grpc.insecure_channel('localhost:50051') as channel:
    stub = chunker_pb2_grpc.ChunkerStub(channel)
    response_iterator = stub.Chunker(empty_pb2.Empty())
    received_bytes = bytes()
    for response in response_iterator:
        received_bytes += response.chunk
print('Concatenated Response:')
print(received_bytes)

Полная версия доступна в Gist: https://gist.github.com/lidizheng/825f1b255767a90fb3a5d4be54071678

...