Improved QueueListener implementation - queue sentinel addition made extensible.
diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py
index 96384bd..57b2057 100644
--- a/Lib/logging/handlers.py
+++ b/Lib/logging/handlers.py
@@ -1307,6 +1307,16 @@
except queue.Empty:
break
+ def enqueue_sentinel(self):
+ """
+ This is used to enqueue the sentinel record.
+
+ The base implementation uses put_nowait. You may want to override this
+ method if you want to use timeouts or work with custom queue
+ implementations.
+ """
+ self.queue.put_nowait(self._sentinel)
+
def stop(self):
"""
Stop the listener.
@@ -1316,6 +1326,6 @@
may be some records still left on the queue, which won't be processed.
"""
self._stop.set()
- self.queue.put_nowait(self._sentinel)
+ self.enqueue_sentinel()
self._thread.join()
self._thread = None