mirror of https://github.com/grpc/grpc.git
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
https://grpc.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidi Zheng
c34bef4ca4
|
5 years ago | |
---|---|---|
.. | ||
test | 6 years ago | |
BUILD.bazel | 5 years ago | |
README.md | 6 years ago | |
client.py | 6 years ago | |
server.py | 5 years ago |
README.md
Compression with gRPC Python
gRPC offers lossless compression options in order to decrease the number of bits transferred over the wire. Three levels of compression are available:
grpc.Compression.NoCompression
- No compression is applied to the payload. (default)grpc.Compression.Deflate
- The "Deflate" algorithm is applied to the payload.grpc.Compression.Gzip
- The Gzip algorithm is applied to the payload.
The default option on both clients and servers is grpc.Compression.NoCompression
.
See the gRPC Compression Spec for more information.
Client Side Compression
Compression may be set at two levels on the client side.
At the channel level
with grpc.insecure_channel('foo.bar:1234', compression=grpc.Compression.Gzip) as channel:
use_channel(channel)
At the call level
Setting the compression method at the call level will override any settings on the channel level.
stub = helloworld_pb2_grpc.GreeterStub(channel)
response = stub.SayHello(helloworld_pb2.HelloRequest(name='you'),
compression=grpc.Compression.Deflate)
Server Side Compression
Additionally, compression may be set at two levels on the server side.
On the entire server
server = grpc.server(futures.ThreadPoolExecutor(),
compression=grpc.Compression.Gzip)
For an individual RPC
def SayHello(self, request, context):
context.set_response_compression(grpc.Compression.NoCompression)
return helloworld_pb2.HelloReply(message='Hello, %s!' % request.name)
Setting the compression method for an individual RPC will override any setting supplied at server creation time.