From e4b9d6161dba5749d2bdd29b2881a3d7c0c65aca Mon Sep 17 00:00:00 2001 From: Blake Blackshear Date: Fri, 3 Feb 2023 18:36:38 -0600 Subject: [PATCH] just keep the log process alive 1 second after the last log message --- frigate/log.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/frigate/log.py b/frigate/log.py index 20827cc1d..40d717642 100644 --- a/frigate/log.py +++ b/frigate/log.py @@ -2,7 +2,9 @@ import logging import threading import os +import signal import queue +import multiprocessing as mp from multiprocessing.queues import Queue from logging import handlers from setproctitle import setproctitle @@ -34,10 +36,21 @@ def log_process(log_queue: Queue) -> None: threading.current_thread().name = f"logger" setproctitle("frigate.logger") listener_configurer() + + stop_event = mp.Event() + + def receiveSignal(signalNumber, frame): + stop_event.set() + + signal.signal(signal.SIGTERM, receiveSignal) + signal.signal(signal.SIGINT, receiveSignal) + while True: try: - record = log_queue.get(timeout=5) + record = log_queue.get(timeout=1) except (queue.Empty, KeyboardInterrupt): + if stop_event.is_set(): + break continue logger = logging.getLogger(record.name) logger.handle(record)