|
@@ -39,9 +39,10 @@ class Daemon:
|
|
|
self.sink: Optional[TranscriptSink] = None
|
|
self.sink: Optional[TranscriptSink] = None
|
|
|
|
|
|
|
|
# Threading
|
|
# Threading
|
|
|
- self.segment_queue: queue.Queue = queue.Queue(maxsize=50)
|
|
|
|
|
|
|
+ self.segment_queue: queue.Queue = queue.Queue(maxsize=cfg.daemon.queue_size)
|
|
|
self._stop_event = threading.Event()
|
|
self._stop_event = threading.Event()
|
|
|
self._stopped = False
|
|
self._stopped = False
|
|
|
|
|
+ self._backlog_warned = False
|
|
|
self._reader_thread: Optional[threading.Thread] = None
|
|
self._reader_thread: Optional[threading.Thread] = None
|
|
|
self._worker_thread: Optional[threading.Thread] = None
|
|
self._worker_thread: Optional[threading.Thread] = None
|
|
|
|
|
|
|
@@ -129,6 +130,7 @@ class Daemon:
|
|
|
self.segment_queue.put(utt, block=False)
|
|
self.segment_queue.put(utt, block=False)
|
|
|
except queue.Empty:
|
|
except queue.Empty:
|
|
|
pass
|
|
pass
|
|
|
|
|
+ self._check_backlog()
|
|
|
|
|
|
|
|
# Shutdown: flush any in-progress utterance
|
|
# Shutdown: flush any in-progress utterance
|
|
|
if self.segmenter:
|
|
if self.segmenter:
|
|
@@ -148,6 +150,19 @@ class Daemon:
|
|
|
if self.capture:
|
|
if self.capture:
|
|
|
self.capture.close()
|
|
self.capture.close()
|
|
|
|
|
|
|
|
|
|
+ def _check_backlog(self) -> None:
|
|
|
|
|
+ """Warn once per overload episode; re-arm only after the queue fully drains."""
|
|
|
|
|
+ size = self.segment_queue.qsize()
|
|
|
|
|
+ if size >= self.cfg.daemon.backlog_warn_at and not self._backlog_warned:
|
|
|
|
|
+ self.logger.warning(
|
|
|
|
|
+ "Transcription backlog reached %d of %d - worker is falling behind",
|
|
|
|
|
+ size,
|
|
|
|
|
+ self.segment_queue.maxsize,
|
|
|
|
|
+ )
|
|
|
|
|
+ self._backlog_warned = True
|
|
|
|
|
+ elif size == 0 and self._backlog_warned:
|
|
|
|
|
+ self._backlog_warned = False
|
|
|
|
|
+
|
|
|
def _worker_loop(self) -> None:
|
|
def _worker_loop(self) -> None:
|
|
|
"""Worker thread: transcribe segments and emit results."""
|
|
"""Worker thread: transcribe segments and emit results."""
|
|
|
try:
|
|
try:
|