Handle 202 responses gracefully

pull/14/head
Mark Jessop 2024-02-03 17:08:37 +10:30
rodzic 4075a417b7
commit a2224da5dd
3 zmienionych plików z 26 dodań i 3 usunięć

Wyświetl plik

@ -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 <git@michaela.lgbt>"]
readme = "README.md"

Wyświetl plik

@ -12,7 +12,7 @@ import queue
import gzip
__version__ = "0.3.2"
__version__ = "0.3.3"
S3_BUCKET = "sondehub-history"

Wyświetl plik

@ -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."