diff --git a/beemapi/node.py b/beemapi/node.py index e570f4a468775835164ed1256f2c2b17aaeefc7b..ca4b3da76e787eea78b8c849edea02aa16892311 100644 --- a/beemapi/node.py +++ b/beemapi/node.py @@ -120,6 +120,11 @@ class Nodes(list): def num_retries_call_reached(self): return self.error_cnt_call >= self.num_retries_call + def disable_node(self): + """Disable current node""" + if self.node is not None and self.num_retries_call >= 0: + self.node.error_cnt_call = self.num_retries_call + def increase_error_cnt(self): """Increase node error count for current node""" if self.node is not None: diff --git a/beemapi/steemnoderpc.py b/beemapi/steemnoderpc.py index 1ce9fa379bb0e2cfb7ef3acff2a8ee0e42ed48d7..a2084a33ecebb5e8eec672451cc0d4d221294de3 100644 --- a/beemapi/steemnoderpc.py +++ b/beemapi/steemnoderpc.py @@ -118,8 +118,9 @@ class SteemNodeRPC(GrapheneRPC): elif re.search("Could not find API", msg): if self._check_api_name(msg): if self.nodes.working_nodes_count > 1 and self.nodes.num_retries > -1: + self.nodes.disable_node() self._switch_to_next_node(msg, "ApiNotSupported") - doRetry = False + doRetry = True else: raise exceptions.ApiNotSupported(msg) else: @@ -151,8 +152,9 @@ class SteemNodeRPC(GrapheneRPC): raise exceptions.UnhandledRPCError("Use Operation(op, appbase=True) to prevent error: " + msg) elif re.search("Client returned invalid format. Expected JSON!", msg): if self.nodes.working_nodes_count > 1 and self.nodes.num_retries > -1: + self.nodes.disable_node() self._switch_to_next_node(msg) - doRetry = False + doRetry = True else: raise exceptions.UnhandledRPCError(msg) elif msg: