diff --git a/pyproject.toml b/pyproject.toml index d8a42a7..0bd7919 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "sondehub" -version = "0.3.2" +version = "0.3.3" description = "SDK to access SondeHub open data, and helpers for uploading telemetry." authors = ["Michaela "] readme = "README.md" diff --git a/sondehub/__init__.py b/sondehub/__init__.py index 3e18aae..d309075 100644 --- a/sondehub/__init__.py +++ b/sondehub/__init__.py @@ -12,7 +12,7 @@ import queue import gzip -__version__ = "0.3.2" +__version__ = "0.3.3" S3_BUCKET = "sondehub-history" diff --git a/sondehub/amateur.py b/sondehub/amateur.py index dd43405..c8a3d21 100644 --- a/sondehub/amateur.py +++ b/sondehub/amateur.py @@ -455,7 +455,30 @@ class Uploader(object): _upload_success = True break - elif _req.status_code == 500: + elif _req.status_code == 202: + # A 202 return code means there was some kind of data issue. + # We expect a response of the form {"message": "error message", "errors":[], "warnings":[]} + try: + _resp_json = _req.json() + + for _error in _resp_json['errors']: + self.log_error("Payload data error: " + _error["error_message"]) + if 'payload' in _error: + self.log_debug("Payload data associated with error: " + str(_error['payload'])) + + for _warning in _resp_json['warnings']: + self.log_warning("Payload data warning: " + _warning["warning_message"]) + if 'payload' in _warning: + self.log_debug("Payload data associated with warning: " + str(_warning['payload'])) + + except Exception as e: + self.log_error("Error when parsing 202 response: %s" % str(e)) + self.log_debug("Content of 202 response: %s" % _req.text) + + _upload_success = True + break + + elif _req.status_code in [500,501,502,503,504]: # Server Error, Retry. self.log_debug( "Error uploading to Sondehub Amateur. Status Code: %d %s."