From 710d79f6306f1f79da370c2c76590e1e7d93f133 Mon Sep 17 00:00:00 2001 From: Lawrence Schlosser Date: Thu, 15 Mar 2018 21:18:26 -0700 Subject: [PATCH] CT-171 Added compression option for api make_request - Activated for POST /jobs/ --- conductor/lib/api_client.py | 13 ++++++++++++- conductor/lib/conductor_submit.py | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/conductor/lib/api_client.py b/conductor/lib/api_client.py index e7fe5342..ddf3e8c4 100644 --- a/conductor/lib/api_client.py +++ b/conductor/lib/api_client.py @@ -1,7 +1,9 @@ +import gzip import json import logging import os import requests +import StringIO import time import urlparse import jwt @@ -57,7 +59,7 @@ def _make_request(self, verb, conductor_url, headers, params, data, raise_on_err def make_request(self, uri_path="/", headers=None, params=None, data=None, verb=None, conductor_url=None, raise_on_error=True, tries=5, - use_api_key=False): + compress=False, use_api_key=False): ''' verb: PUT, POST, GET, DELETE, HEAD, PATCH ''' @@ -91,6 +93,15 @@ def make_request(self, uri_path="/", headers=None, params=None, data=None, assert verb in self.http_verbs, "Invalid http verb: %s" % verb + # GZip Compress the content of the request + if compress: + headers["Content-Encoding"] = "gzip" + logger.debug("gzipping content...") + out_file = StringIO.StringIO() + with gzip.GzipFile(fileobj=out_file, mode="w") as gzipper: + gzipper.write(data) + data = out_file.getvalue() + # Create a retry wrapper function retry_wrapper = common.DecRetry(retry_exceptions=CONNECTION_EXCEPTIONS, tries=tries) diff --git a/conductor/lib/conductor_submit.py b/conductor/lib/conductor_submit.py index 7642ae5b..3242da33 100755 --- a/conductor/lib/conductor_submit.py +++ b/conductor/lib/conductor_submit.py @@ -303,7 +303,6 @@ def validate_args(self): if self.gpu_config.get("type") not in supported_gpu_types: raise BadArgumentError("GPU type %s is not one of %s" % (self.gpu_config.get("type"), supported_gpu_types)) - def send_job(self, upload_files, upload_size): ''' Construct args for two different cases: @@ -378,6 +377,7 @@ def send_job(self, upload_files, upload_size): logger.info("Sending Job...") response, response_code = self.api_client.make_request(uri_path="jobs/", data=json.dumps(submit_dict), + compress=True, raise_on_error=False, use_api_key=True) if response_code not in [201, 204]: