From 13e6e368121f8b30194e12ce99dbc66c4e4d91dc Mon Sep 17 00:00:00 2001 From: George Tsiamasiotis Date: Mon, 23 Sep 2024 11:03:48 +0300 Subject: [PATCH] Register SIGTERM handler in main --- frigate/__main__.py | 4 ++++ frigate/app.py | 10 +--------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/frigate/__main__.py b/frigate/__main__.py index 6574181d3..9e8124b5b 100644 --- a/frigate/__main__.py +++ b/frigate/__main__.py @@ -1,6 +1,7 @@ import argparse import faulthandler import logging +import signal import sys import threading @@ -24,6 +25,9 @@ def main() -> None: threading.current_thread().name = "frigate" cli.show_server_banner = lambda *x: None + # Make sure we exit cleanly on SIGTERM. + signal.signal(signal.SIGTERM, lambda sig, frame: sys.exit()) + # Parse the cli arguments. parser = argparse.ArgumentParser( prog="Frigate", diff --git a/frigate/app.py b/frigate/app.py index 65ff79198..0d15a7362 100644 --- a/frigate/app.py +++ b/frigate/app.py @@ -4,12 +4,10 @@ import multiprocessing as mp import os import secrets import shutil -import signal import sys from multiprocessing import Queue from multiprocessing.synchronize import Event as MpEvent -from types import FrameType -from typing import Any, Optional +from typing import Any import psutil from peewee_migrate import Router @@ -678,12 +676,6 @@ class FrigateApp: self.start_watchdog() self.init_auth() - # Flask only listens for SIGINT, so we need to catch SIGTERM and send SIGINT - def receiveSignal(signalNumber: int, frame: Optional[FrameType]) -> None: - os.kill(os.getpid(), signal.SIGINT) - - signal.signal(signal.SIGTERM, receiveSignal) - try: self.flask_app.run(host="127.0.0.1", port=5001, debug=False, threaded=True) except KeyboardInterrupt: