def stop(self, nowait=False):
        """Stop 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.
        If nowait is False then thread will handle remaining items in queue and
        stop.
        If nowait is True then thread will be stopped even if the queue still
        contains items.
        """
        self._stop.set()
        if nowait:
            self._stop_nowait.set()
        self.queue.put_nowait(self._sentinel_item)
        if (self._thread.isAlive() and
                self._thread is not threading.currentThread()):
            self._thread.join()
        self._thread = None
Stop 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.
        If nowait is False then thread will handle remaining items in queue and
        stop.
        If nowait is True then thread will be stopped even if the queue still
        contains items.