'Consume the queue items, sending them to the plugins which are then
going to find vulnerabilities, new URLs, etc.'

def run(self):

    while True:
        try:
            work_unit = self.in_queue.get()
        except KeyboardInterrupt:
            continue
        if (work_unit == POISON_PILL):
            self._threadpool.close()
            self._threadpool.join()
            del self._threadpool
            self._teardown()
            self._out_queue.put(POISON_PILL)
            self.in_queue.task_done()
            break
        else:
            try:
                self._consume_wrapper(work_unit)
            finally:
                self.in_queue.task_done()
