just keep the log process alive 1 second after the last log message

This commit is contained in:
Blake Blackshear 2023-02-03 18:36:38 -06:00
parent 9afdbe0ccd
commit e4b9d6161d

View File

@ -2,7 +2,9 @@
import logging import logging
import threading import threading
import os import os
import signal
import queue import queue
import multiprocessing as mp
from multiprocessing.queues import Queue from multiprocessing.queues import Queue
from logging import handlers from logging import handlers
from setproctitle import setproctitle from setproctitle import setproctitle
@ -34,10 +36,21 @@ def log_process(log_queue: Queue) -> None:
threading.current_thread().name = f"logger" threading.current_thread().name = f"logger"
setproctitle("frigate.logger") setproctitle("frigate.logger")
listener_configurer() 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: while True:
try: try:
record = log_queue.get(timeout=5) record = log_queue.get(timeout=1)
except (queue.Empty, KeyboardInterrupt): except (queue.Empty, KeyboardInterrupt):
if stop_event.is_set():
break
continue continue
logger = logging.getLogger(record.name) logger = logging.getLogger(record.name)
logger.handle(record) logger.handle(record)