diff --git a/cterasdk/clients/clients.py b/cterasdk/clients/clients.py index 3df1e8ce..de31961f 100644 --- a/cterasdk/clients/clients.py +++ b/cterasdk/clients/clients.py @@ -237,7 +237,7 @@ def multipart(self, path, form, *, on_response=None, on_error=None, **kwargs): @decorators.authenticated def delete(self, path, data=None, *, data_serializer=None, on_response=None, on_error=None, **kwargs): - request = async_requests.DeleteRequest(self._builder(path), data=data_serializer(data), **kwargs) + request = async_requests.DeleteRequest(self._builder(path), data=data_serializer(data) if data_serializer else None, **kwargs) return self.request(request, on_response=on_response, on_error=on_error) def _request(self, request, *, on_response=None, on_error=None): @@ -407,10 +407,8 @@ def login(self): def execute(target, *args, **kwargs): - loop = asyncio.get_event_loop() - - if not loop.is_running(): - return loop.run_until_complete(target(*args, **kwargs)) + if not event_loop.is_running(): + return event_loop.run_until_complete(target(*args, **kwargs)) return run_threadsafe(event_loop, target, *args, **kwargs) diff --git a/cterasdk/convert/serializers.py b/cterasdk/convert/serializers.py index f15887d9..6d6f041d 100644 --- a/cterasdk/convert/serializers.py +++ b/cterasdk/convert/serializers.py @@ -39,7 +39,9 @@ def _to_protected_dict(o): class Encoder(json.JSONEncoder): def default(self, o): - d = o.get('__dict__', None) + if isinstance(o, Exception): + return str(o) + d = getattr(o, '__dict__', None) if d: if '_classname' in d: d['$class'] = d.pop('_classname')