self.memorypool_update()
print_log("Memory pool initialized.")
- threading.Timer(10, self.main_iteration).start()
+ self.timer = threading.Timer(10, self.main_iteration)
+ self.timer.start()
# TODO: update cache here. if new value equals cached value, do not send notification
self.address_queue.put((address,sessions))
+
+ def close(self):
+ self.timer.join()
+ print_log("Closing database...")
+ self.storage.close()
+ print_log("Database is closed")
+
+
def main_iteration(self):
if self.shared.stopped():
- print_log("blockchain processor terminating")
- self.storage.close()
+ print_log("Stopping timer")
return
with self.dblock:
'params': [addr, status],
})
- if not self.shared.stopped():
- threading.Timer(10, self.main_iteration).start()
- else:
- print_log("blockchain processor terminating")
+ # next iteration
+ self.timer = threading.Timer(10, self.main_iteration)
+ self.timer.start()
+
#print "response", response
self.dispatcher.request_dispatcher.push_response(session, response)
+ def close(self):
+ pass
+
def run(self):
while not self.shared.stopped():
- request, session = self.queue.get(10000000000)
+ try:
+ request, session = self.queue.get(True, timeout=1)
+ except:
+ continue
try:
self.process(request, session)
except:
traceback.print_exc(file=sys.stdout)
- print_log("processor terminating")
+ self.close()
class Dispatcher: