- Switched from yapf to black - Reconfigure isort for black - Resolve black/pylint idiosyncrasies Note: I used `--experimental-string-processing` because black was producing "implicit string concatenation", similar to what described here: https://github.com/psf/black/issues/1837. While currently this feature is experimental, it will be enabled by default: https://github.com/psf/black/issues/2188. After running black with the new string processing so that the generated code merges these `"hello" " world"` strings concatenations, then I removed `--experimental-string-processing` for stability, and regenerated the code again. To the reviewer: don't even try to open "Files Changed" tab 😄 It's better to review commit-by-commit, and ignore `run black and isort`. |
||
|---|---|---|
| .. | ||
| test | ||
| BUILD.bazel | ||
| README.md | ||
| client.py | ||
| server.py | ||
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.