Register SIGTERM handler in main

This commit is contained in:
George Tsiamasiotis 2024-09-23 11:03:48 +03:00
parent aa62a0be11
commit 13e6e36812
2 changed files with 5 additions and 9 deletions

View File

@ -1,6 +1,7 @@
import argparse import argparse
import faulthandler import faulthandler
import logging import logging
import signal
import sys import sys
import threading import threading
@ -24,6 +25,9 @@ def main() -> None:
threading.current_thread().name = "frigate" threading.current_thread().name = "frigate"
cli.show_server_banner = lambda *x: None 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. # Parse the cli arguments.
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
prog="Frigate", prog="Frigate",

View File

@ -4,12 +4,10 @@ import multiprocessing as mp
import os import os
import secrets import secrets
import shutil import shutil
import signal
import sys import sys
from multiprocessing import Queue from multiprocessing import Queue
from multiprocessing.synchronize import Event as MpEvent from multiprocessing.synchronize import Event as MpEvent
from types import FrameType from typing import Any
from typing import Any, Optional
import psutil import psutil
from peewee_migrate import Router from peewee_migrate import Router
@ -678,12 +676,6 @@ class FrigateApp:
self.start_watchdog() self.start_watchdog()
self.init_auth() 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: try:
self.flask_app.run(host="127.0.0.1", port=5001, debug=False, threaded=True) self.flask_app.run(host="127.0.0.1", port=5001, debug=False, threaded=True)
except KeyboardInterrupt: except KeyboardInterrupt: