class QueueProcessThread(threading.Thread):
    def __init__(self, args=()):
        super(QueueProcessThread, self).__init__()
        self.queue = args[0]
        self.queue_max_size = args[1]
        self.db = None
        self._stop_event = threading.Event()

    def run(self):
        """
			Add a key to the KEYS table, if the keys does not already exist.
		"""
        self.db = Db()
        self.db.connect()
        while (1):
            if self.stopped():
                self.empty_queue()
                self.db.disconnect()
                break
            self.empty_queue()

        return

    def empty_queue(self):
        keys = []
        while self.queue.empty() == False:
            keys.append(self.queue.get())
            self.queue.task_done()
        self.db.add_keys(keys)

    def stop(self):
        self._stop_event.set()

    def stopped(self):
        return self._stop_event.is_set()