tprevent busy looping - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 29e2570d3d45ede9e555f8667bad840fd5cf74b3 DIR parent 6055d4b2fd145052247d55ff30f0c80168ebceff HTML Author: ThomasV <thomasv@electrum.org> Date: Mon, 9 Jan 2017 16:36:05 +0100 prevent busy looping Diffstat: M lib/interface.py | 7 ++++++- M lib/network.py | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) --- DIR diff --git a/lib/interface.py b/lib/interface.py t@@ -257,10 +257,15 @@ class Interface(util.PrintError): self.request_time = time.time() self.unsent_requests.append(args) + def num_requests(self): + '''Keep unanswered requests below 100''' + n = 100 - len(self.unanswered_requests) + return min(n, len(self.unsent_requests)) + def send_requests(self): '''Sends queued requests. Returns False on failure.''' make_dict = lambda (m, p, i): {'method': m, 'params': p, 'id': i} - n = 100 - len(self.unanswered_requests) + n = self.num_requests() wire_requests = self.unsent_requests[0:n] try: self.pipe.send_all(map(make_dict, wire_requests)) DIR diff --git a/lib/network.py b/lib/network.py t@@ -788,7 +788,7 @@ class Network(util.DaemonThread): time.sleep(0.1) return rin = [i for i in self.interfaces.values()] - win = [i for i in self.interfaces.values() if i.unsent_requests] + win = [i for i in self.interfaces.values() if i.num_requests()] try: rout, wout, xout = select.select(rin, win, [], 0.1) except socket.error as (code, msg):