class logging.handlers.QueueListener(queue, *handlers, respect_handler_level=False)
Returns a new instance of the QueueListener
class. The instance is initialized with the queue to send messages to and a list of handlers which will handle entries placed on the queue. The queue can be any queue- like object; it’s passed as-is to the dequeue()
method, which needs to know how to get messages from it. If respect_handler_level
is True
, a handler’s level is respected (compared with the level for the message) when deciding whether to pass messages to that handler; otherwise, the behaviour is as in previous Python versions - to always pass each message to each handler.
Changed in version 3.5: The respect_handler_levels
argument was added.
-
dequeue(block)
-
Dequeues a record and return it, optionally blocking.
The base implementation uses
get()
. You may want to override this method if you want to use timeouts or work with custom queue implementations.
-
prepare(record)
-
Prepare a record for handling.
This implementation just returns the passed-in record. You may want to override this method if you need to do any custom marshalling or manipulation of the record before passing it to the handlers.
-
handle(record)
-
Handle a record.
This just loops through the handlers offering them the record to handle. The actual object passed to the handlers is that which is returned from
prepare()
.
-
start()
-
Starts the listener.
This starts up a background thread to monitor the queue for LogRecords to process.
-
stop()
-
Stops the listener.
This asks the thread to terminate, and then waits for it to do so. Note that if you don’t call this before your application exits, there may be some records still left on the queue, which won’t be processed.
-
enqueue_sentinel()
-
Writes a sentinel to the queue to tell the listener to quit. This implementation uses
put_nowait()
. You may want to override this method if you want to use timeouts or work with custom queue implementations.New in version 3.3.
Please login to continue.