From 334c4f8e554fca12d55fb985d289252f49c71912 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 25 Jul 2014 18:48:48 +0000 Subject: [PATCH] Allow a way for consumers of the MultiTail generator to stop the generator. If there is no new data being pumped into the tailed files a consumer will block forever. This allows for a graceful shutdown after draining the files if the producer has been shut down. --- src/multitail2.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/multitail2.py b/src/multitail2.py index 7c259a1..58aaf3e 100644 --- a/src/multitail2.py +++ b/src/multitail2.py @@ -119,7 +119,7 @@ def __init__(self, globspec, interval = 1.0, skip_to_end = True, offsets = None) self._offsets = {} else: self._offsets = offsets - + self.stop_generator = False self._rescan(skip_to_end = skip_to_end) def _rescan(self, skip_to_end = True): @@ -172,12 +172,13 @@ def poll(self, force_rescan = False): yield (path, offset), line def __iter__(self): - while True: + while not self.stop_generator: for event in self.poll(): yield event # TODO Replace this with FAM/inotify for watching filesystem events. time.sleep(self._interval) + raise StopIteration def offsets(self): """A generator producing a (path, offset) tuple for all tailed files."""