From 63733ccd2a4d3e2e06d1932d676f3a705d66c1af Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Tue, 19 May 2015 14:26:45 +0900 Subject: [PATCH] No need for thread to handle requests Handle requests in the main loop. Remove unused lock. interface.py was reworked and send_request() no longer throws. --- lib/network.py | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/lib/network.py b/lib/network.py index ba1f4237..a07a6d64 100644 --- a/lib/network.py +++ b/lib/network.py @@ -1,4 +1,3 @@ -import threading import time import Queue import os @@ -129,7 +128,6 @@ class Network(util.DaemonThread): config = {} # Do not use mutables as default values! util.DaemonThread.__init__(self) self.config = SimpleConfig(config) if type(config) == type({}) else config - self.lock = threading.Lock() self.num_server = 8 if not self.config.get('oneserver') else 0 self.blockchain = Blockchain(self.config, self) self.interfaces = {} @@ -303,8 +301,6 @@ class Network(util.DaemonThread): self.running = True self.response_queue = response_queue self.start_interfaces() - t = threading.Thread(target=self.process_requests_thread) - t.start() self.blockchain.start() util.DaemonThread.start(self) @@ -433,13 +429,12 @@ class Network(util.DaemonThread): else: self.response_queue.put(response) - def process_requests_thread(self): - while self.is_running(): - try: - request = self.requests_queue.get(timeout=0.1) - except Queue.Empty: - continue - self.process_request(request) + def handle_requests(self): + try: + request = self.requests_queue.get(timeout=0.1) + except Queue.Empty: + return + self.process_request(request) def process_request(self, request): method = request['method'] @@ -470,14 +465,7 @@ class Network(util.DaemonThread): # store unanswered request self.unanswered_requests[_id] = request - - try: - self.interface.send_request(request) - except: - # put it back in the queue - self.print_error("warning: interface not ready for", request) - self.requests_queue.put(request) - time.sleep(0.1) + self.interface.send_request(request) def check_interfaces(self): now = time.time() @@ -509,6 +497,7 @@ class Network(util.DaemonThread): def run(self): while self.is_running(): self.check_interfaces() + self.handle_requests() try: i, response = self.queue.get(timeout=0.1) except Queue.Empty: