mirror of
https://github.com/clearml/clearml
synced 2025-04-23 15:55:45 +00:00
Don't raise error for batch requests with no items
This commit is contained in:
parent
ab9487c4e0
commit
8e859503f6
@ -51,17 +51,35 @@ class CallResult(object):
|
|||||||
else:
|
else:
|
||||||
self.__response_data = None
|
self.__response_data = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _make_raw_response(cls, request_cls=None, service=None, action=None, status_code=200, text=None):
|
||||||
|
service = service or (request_cls._service if request_cls else 'unknown')
|
||||||
|
action = action or (request_cls._action if request_cls else 'unknown')
|
||||||
|
return cls(request_cls=request_cls, meta=ResponseMeta.from_raw_data(
|
||||||
|
status_code=status_code, text=text, endpoint='%(service)s.%(action)s' % locals()))
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_result(cls, res, request_cls=None, logger=None, service=None, action=None, session=None):
|
def from_result(cls, res, request_cls=None, logger=None, service=None, action=None, session=None):
|
||||||
""" From requests result """
|
""" From requests result """
|
||||||
response_cls = get_response_cls(request_cls)
|
response_cls = get_response_cls(request_cls)
|
||||||
|
|
||||||
|
if res is None:
|
||||||
|
return cls._make_raw_response(
|
||||||
|
request_cls=request_cls,
|
||||||
|
service=service,
|
||||||
|
action=action
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
data = res.json()
|
data = res.json()
|
||||||
except ValueError:
|
except ValueError:
|
||||||
service = service or (request_cls._service if request_cls else 'unknown')
|
return cls._make_raw_response(
|
||||||
action = action or (request_cls._action if request_cls else 'unknown')
|
request_cls=request_cls,
|
||||||
return cls(request_cls=request_cls, meta=ResponseMeta.from_raw_data(
|
service=service,
|
||||||
status_code=res.status_code, text=res.text, endpoint='%(service)s.%(action)s' % locals()))
|
action=action,
|
||||||
|
status_code=res.status_code,
|
||||||
|
text=res.text
|
||||||
|
)
|
||||||
if 'meta' not in data:
|
if 'meta' not in data:
|
||||||
raise ValueError('Missing meta section in response payload')
|
raise ValueError('Missing meta section in response payload')
|
||||||
try:
|
try:
|
||||||
|
@ -30,7 +30,7 @@ class ResponseMeta(jsonmodels.models.Base):
|
|||||||
return self._is_valid
|
return self._is_valid
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_raw_data(cls, status_code, text, endpoint=None):
|
def from_raw_data(cls, status_code, text="", endpoint=None):
|
||||||
return cls(is_valid=False, result_code=status_code, result_subcode=0, result_msg=text,
|
return cls(is_valid=False, result_code=status_code, result_subcode=0, result_msg=text,
|
||||||
endpoint=_ResponseEndpoint(name=(endpoint or 'unknown')))
|
endpoint=_ResponseEndpoint(name=(endpoint or 'unknown')))
|
||||||
|
|
||||||
|
@ -341,9 +341,8 @@ class Session(TokenManager):
|
|||||||
raise ValueError("Expecting list, tuple or generator in 'data' or 'json'")
|
raise ValueError("Expecting list, tuple or generator in 'data' or 'json'")
|
||||||
|
|
||||||
if not data and not json:
|
if not data and not json:
|
||||||
raise ValueError(
|
# Missing data (data or json), batch requests are meaningless without it.
|
||||||
"Missing data (data or json), batch requests are meaningless without it."
|
return None
|
||||||
)
|
|
||||||
|
|
||||||
headers = headers.copy() if headers else {}
|
headers = headers.copy() if headers else {}
|
||||||
headers["Content-Type"] = "application/json-lines"
|
headers["Content-Type"] = "application/json-lines"
|
||||||
@ -439,11 +438,12 @@ class Session(TokenManager):
|
|||||||
headers=headers,
|
headers=headers,
|
||||||
)
|
)
|
||||||
# TODO: handle multiple results in this case
|
# TODO: handle multiple results in this case
|
||||||
try:
|
if res is not None:
|
||||||
res = next(r for r in res if r.status_code != 200)
|
try:
|
||||||
except StopIteration:
|
res = next(r for r in res if r.status_code != 200)
|
||||||
# all are 200
|
except StopIteration:
|
||||||
res = res[0]
|
# all are 200
|
||||||
|
res = res[0]
|
||||||
else:
|
else:
|
||||||
res = self.send_request(
|
res = self.send_request(
|
||||||
service=req_obj._service,
|
service=req_obj._service,
|
||||||
|
@ -1 +1 @@
|
|||||||
__version__ = '0.16.2rc1'
|
__version__ = '0.16.2rc2'
|
||||||
|
Loading…
Reference in New Issue
Block a user