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.
This commit is contained in:
Neil Booth 2015-05-19 14:26:45 +09:00
parent 18032fc4f6
commit 63733ccd2a
1 changed files with 8 additions and 19 deletions

View File

@ -1,4 +1,3 @@
import threading
import time import time
import Queue import Queue
import os import os
@ -129,7 +128,6 @@ class Network(util.DaemonThread):
config = {} # Do not use mutables as default values! config = {} # Do not use mutables as default values!
util.DaemonThread.__init__(self) util.DaemonThread.__init__(self)
self.config = SimpleConfig(config) if type(config) == type({}) else config 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.num_server = 8 if not self.config.get('oneserver') else 0
self.blockchain = Blockchain(self.config, self) self.blockchain = Blockchain(self.config, self)
self.interfaces = {} self.interfaces = {}
@ -303,8 +301,6 @@ class Network(util.DaemonThread):
self.running = True self.running = True
self.response_queue = response_queue self.response_queue = response_queue
self.start_interfaces() self.start_interfaces()
t = threading.Thread(target=self.process_requests_thread)
t.start()
self.blockchain.start() self.blockchain.start()
util.DaemonThread.start(self) util.DaemonThread.start(self)
@ -433,12 +429,11 @@ class Network(util.DaemonThread):
else: else:
self.response_queue.put(response) self.response_queue.put(response)
def process_requests_thread(self): def handle_requests(self):
while self.is_running():
try: try:
request = self.requests_queue.get(timeout=0.1) request = self.requests_queue.get(timeout=0.1)
except Queue.Empty: except Queue.Empty:
continue return
self.process_request(request) self.process_request(request)
def process_request(self, request): def process_request(self, request):
@ -470,14 +465,7 @@ class Network(util.DaemonThread):
# store unanswered request # store unanswered request
self.unanswered_requests[_id] = request self.unanswered_requests[_id] = request
try:
self.interface.send_request(request) 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)
def check_interfaces(self): def check_interfaces(self):
now = time.time() now = time.time()
@ -509,6 +497,7 @@ class Network(util.DaemonThread):
def run(self): def run(self):
while self.is_running(): while self.is_running():
self.check_interfaces() self.check_interfaces()
self.handle_requests()
try: try:
i, response = self.queue.get(timeout=0.1) i, response = self.queue.get(timeout=0.1)
except Queue.Empty: except Queue.Empty: