This will allow us to not have an extra signal to check across
processes.
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
except OSError as e:
log.error("Failed to remove %s: %s" % (SOCKET_PATH, e))
+ # Close the queue
+ self.queue.close()
+
# Terminate all workers
for worker in self.workers:
worker.terminate()
signal.signal(signo, signal.SIG_DFL)
# Loop for forever
- while self.reporter.is_running.is_set():
- event = self.reporter.queue.get(block=True)
+ while True:
+ try:
+ event = self.reporter.queue.get(block=True)
+
+ # If the queue has been closed, we immediately exit
+ except ValueError:
+ break
# Log the event
log.debug("Received event in worker %s: %s" % (self.pid, event))