use s6 to shutdown frigate

This commit is contained in:
Blake Blackshear 2021-09-18 07:40:27 -05:00
parent 96319e795c
commit a943ac1308
2 changed files with 13 additions and 2 deletions

View File

@ -18,6 +18,7 @@ import cv2
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
import os import os
import psutil
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -534,7 +535,13 @@ def clipped(obj, frame_shape):
def restart_frigate(): def restart_frigate():
os.kill(os.getpid(), signal.SIGTERM) proc = psutil.Process(1)
# if this is running via s6, sigterm pid 1
if proc.name() == "s6-svscan":
proc.terminate()
# otherwise, just try and exit frigate
else:
os.kill(os.getpid(), signal.SIGTERM)
class EventsPerSecond: class EventsPerSecond:

View File

@ -5,6 +5,10 @@ import time
import os import os
import signal import signal
from frigate.util import (
restart_frigate,
)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -30,6 +34,6 @@ class FrigateWatchdog(threading.Thread):
detector.start_or_restart() detector.start_or_restart()
elif not detector.detect_process.is_alive(): elif not detector.detect_process.is_alive():
logger.info("Detection appears to have stopped. Exiting frigate...") logger.info("Detection appears to have stopped. Exiting frigate...")
os.kill(os.getpid(), signal.SIGTERM) restart_frigate()
logger.info(f"Exiting watchdog...") logger.info(f"Exiting watchdog...")