From aa641f7ce56748d83426d7b158a0010ccb8f6a42 Mon Sep 17 00:00:00 2001 From: Andrey 'kondor' Sichevoy Date: Tue, 22 Nov 2022 14:41:56 +0100 Subject: [PATCH] Compress response with gzip --- druid_exporter/exporter.py | 12 ++++++++++-- setup.py | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/druid_exporter/exporter.py b/druid_exporter/exporter.py index 2a738c4..31503ad 100644 --- a/druid_exporter/exporter.py +++ b/druid_exporter/exporter.py @@ -22,11 +22,11 @@ from druid_exporter import collector from prometheus_client import generate_latest, make_wsgi_app, REGISTRY from gevent.pywsgi import WSGIServer +from wsgigzip import gzip log = logging.getLogger(__name__) class DruidWSGIApp(object): - def __init__(self, post_uri, druid_collector, prometheus_app, encoding): self.prometheus_app = prometheus_app self.druid_collector = druid_collector @@ -59,6 +59,14 @@ def __call__(self, environ, start_response): return '' +def with_gzip_compression(handle_cb): + @gzip(compress_level=6) + def handle(environ, start_response): + return handle_cb(environ, start_response) + + return handle + + def main(): parser = argparse.ArgumentParser() parser.add_argument('-l', '--listen', metavar='ADDRESS', @@ -86,7 +94,7 @@ def main(): druid_wsgi_app = DruidWSGIApp(args.uri, druid_collector, prometheus_app, args.encoding) - httpd = WSGIServer((address, int(port)), druid_wsgi_app) + httpd = WSGIServer((address, int(port)), with_gzip_compression(druid_wsgi_app)) httpd.serve_forever() if __name__ == "__main__": diff --git a/setup.py b/setup.py index 8016254..7efdc0a 100644 --- a/setup.py +++ b/setup.py @@ -11,6 +11,7 @@ install_requires=[ 'prometheus-client==0.7.1', 'gevent', + 'wsgigzip' ], entry_points={ 'console_scripts': [