Quellcode durchsuchen

use s6 to shutdown frigate

Blake Blackshear vor 3 Jahren
Ursprung
Commit
a943ac1308
2 geänderte Dateien mit 13 neuen und 2 gelöschten Zeilen
  1. 8 1
      frigate/util.py
  2. 5 1
      frigate/watchdog.py

+ 8 - 1
frigate/util.py

@@ -18,6 +18,7 @@ import cv2
 import matplotlib.pyplot as plt
 import numpy as np
 import os
+import psutil
 
 logger = logging.getLogger(__name__)
 
@@ -534,7 +535,13 @@ def clipped(obj, frame_shape):
 
 
 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:

+ 5 - 1
frigate/watchdog.py

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