Skip to content

Commit 7bbe07b

Browse files
committed
Merge pull request #198 from chrisroberts/enhancement/no-wedgies
Make consumer check threaded to prevent wedge state
2 parents 973863e + 05e898d commit 7bbe07b

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

beaver/worker/tail_manager.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,18 @@ def watch(self, paths=[]):
4747
if tail.active:
4848
self._tails[tail.fid()] = tail
4949

50+
def create_queue_consumer_if_required(self, interval=5.0):
51+
if not (self._proc and self._proc.is_alive()):
52+
self._proc = self._create_queue_consumer()
53+
timer = threading.Timer(interval, self.create_queue_consumer_if_required)
54+
timer.start()
55+
5056
def run(self, interval=0.1,):
57+
58+
self.create_queue_consumer_if_required()
59+
5160
while self._active:
5261
for fid in self._tails.keys():
53-
if not (self._proc and self._proc.is_alive()):
54-
self._proc = self._create_queue_consumer()
5562

5663
self.update_files()
5764

beaver/worker/worker.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import sqlite3
99
import stat
1010
import time
11+
import threading
1112

1213
from beaver.utils import IS_GZIPPED_FILE, REOPEN_FILES, eglob, multiline_merge
1314
from beaver.unicode_dammit import ENCODINGS
@@ -82,14 +83,20 @@ def listdir(self):
8283
else:
8384
return []
8485

86+
def create_queue_consumer_if_required(self, interval=5.0):
87+
if not (self._proc and self._proc.is_alive()):
88+
self._proc = self._create_queue_consumer()
89+
timer = threading.Timer(interval, self.create_queue_consumer_if_required)
90+
timer.start()
91+
8592
def loop(self, interval=0.1, async=False):
8693
"""Start the loop.
8794
If async is True make one loop then return.
8895
"""
96+
self.create_queue_consumer_if_required()
97+
8998
while True:
9099
t = time.time()
91-
if not (self._proc and self._proc.is_alive()):
92-
self._proc = self._create_queue_consumer()
93100

94101
if int(time.time()) - self._update_time > self._beaver_config.get('discover_interval'):
95102
self.update_files()

0 commit comments

Comments
 (0)