14 """An example of compression on the server side with gRPC."""
16 from __future__
import absolute_import
17 from __future__
import division
18 from __future__
import print_function
21 from concurrent
import futures
27 from examples.protos
import helloworld_pb2
28 from examples.protos
import helloworld_pb2_grpc
30 _DESCRIPTION =
'A server capable of compression.'
31 _COMPRESSION_OPTIONS = {
32 "none": grpc.Compression.NoCompression,
33 "deflate": grpc.Compression.Deflate,
34 "gzip": grpc.Compression.Gzip,
36 _LOGGER = logging.getLogger(__name__)
38 _SERVER_HOST =
'localhost'
50 suppress_compression =
False
53 suppress_compression =
True
55 return suppress_compression
59 context.set_response_compression(grpc.Compression.NoCompression)
63 def run_server(server_compression, no_compress_every_n, port):
65 compression=server_compression,
66 options=((
'grpc.so_reuseport', 1),))
68 Greeter(no_compress_every_n), server)
69 address =
'{}:{}'.
format(_SERVER_HOST, port)
70 server.add_insecure_port(address)
72 print(
"Server listening at '{}'".
format(address))
73 server.wait_for_termination()
77 parser = argparse.ArgumentParser(description=_DESCRIPTION)
78 parser.add_argument(
'--server_compression',
81 choices=_COMPRESSION_OPTIONS.keys(),
82 help=
'The default compression method for the server.')
83 parser.add_argument(
'--no_compress_every_n',
87 help=
'If set, every nth reply will be uncompressed.')
88 parser.add_argument(
'--port',
92 help=
'The port on which the server will listen.')
93 args = parser.parse_args()
94 run_server(_COMPRESSION_OPTIONS[args.server_compression],
95 args.no_compress_every_n, args.port)
98 if __name__ ==
"__main__":