Fix go2rtc init (#18708)

* Cleanup process handling

* Adjust process name
This commit is contained in:
Nicolas Mowen 2025-06-13 11:09:51 -06:00 committed by GitHub
parent d7a446e0f6
commit c3ba834a1c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 20 additions and 23 deletions

View File

@ -4,13 +4,13 @@ from statistics import mean
import numpy as np import numpy as np
import frigate.util as util
from frigate.config import DetectorTypeEnum from frigate.config import DetectorTypeEnum
from frigate.object_detection.base import ( from frigate.object_detection.base import (
ObjectDetectProcess, ObjectDetectProcess,
RemoteObjectDetector, RemoteObjectDetector,
load_labels, load_labels,
) )
from frigate.util.process import FrigateProcess
my_frame = np.expand_dims(np.full((300, 300, 3), 1, np.uint8), axis=0) my_frame = np.expand_dims(np.full((300, 300, 3), 1, np.uint8), axis=0)
labels = load_labels("/labelmap.txt") labels = load_labels("/labelmap.txt")
@ -91,7 +91,7 @@ edgetpu_process_2 = ObjectDetectProcess(
) )
for x in range(0, 10): for x in range(0, 10):
camera_process = util.Process( camera_process = FrigateProcess(
target=start, args=(x, 300, detection_queue, events[str(x)]) target=start, args=(x, 300, detection_queue, events[str(x)])
) )
camera_process.daemon = True camera_process.daemon = True

View File

@ -16,9 +16,9 @@ from frigate.const import CONFIG_DIR, FACE_DIR
from frigate.data_processing.types import DataProcessorMetrics from frigate.data_processing.types import DataProcessorMetrics
from frigate.db.sqlitevecq import SqliteVecQueueDatabase from frigate.db.sqlitevecq import SqliteVecQueueDatabase
from frigate.models import Event from frigate.models import Event
from frigate.util import Process as FrigateProcess
from frigate.util.builtin import serialize from frigate.util.builtin import serialize
from frigate.util.classification import kickoff_model_training from frigate.util.classification import kickoff_model_training
from frigate.util.process import FrigateProcess
from .maintainer import EmbeddingMaintainer from .maintainer import EmbeddingMaintainer
from .util import ZScoreNormalization from .util import ZScoreNormalization

View File

@ -11,7 +11,6 @@ from typing import Any, Tuple
import numpy as np import numpy as np
import frigate.util as util
from frigate.comms.detections_updater import DetectionPublisher, DetectionTypeEnum from frigate.comms.detections_updater import DetectionPublisher, DetectionTypeEnum
from frigate.comms.event_metadata_updater import ( from frigate.comms.event_metadata_updater import (
EventMetadataPublisher, EventMetadataPublisher,
@ -40,6 +39,7 @@ from frigate.ffmpeg_presets import parse_preset_input
from frigate.log import LogPipe from frigate.log import LogPipe
from frigate.object_detection.base import load_labels from frigate.object_detection.base import load_labels
from frigate.util.builtin import get_ffmpeg_arg_list from frigate.util.builtin import get_ffmpeg_arg_list
from frigate.util.process import FrigateProcess
from frigate.video import start_or_restart_ffmpeg, stop_ffmpeg from frigate.video import start_or_restart_ffmpeg, stop_ffmpeg
try: try:
@ -76,7 +76,7 @@ def get_ffmpeg_command(ffmpeg: FfmpegConfig) -> list[str]:
) )
class AudioProcessor(util.Process): class AudioProcessor(FrigateProcess):
name = "frigate.audio_manager" name = "frigate.audio_manager"
def __init__( def __init__(

View File

@ -7,7 +7,6 @@ from multiprocessing.synchronize import Event as MpEvent
import numpy as np import numpy as np
import frigate.util as util
from frigate.comms.object_detector_signaler import ( from frigate.comms.object_detector_signaler import (
ObjectDetectorPublisher, ObjectDetectorPublisher,
ObjectDetectorSubscriber, ObjectDetectorSubscriber,
@ -21,6 +20,7 @@ from frigate.detectors.detector_config import (
) )
from frigate.util.builtin import EventsPerSecond, load_labels from frigate.util.builtin import EventsPerSecond, load_labels
from frigate.util.image import SharedMemoryFrameManager, UntrackedSharedMemory from frigate.util.image import SharedMemoryFrameManager, UntrackedSharedMemory
from frigate.util.process import FrigateProcess
from .util import tensor_transform from .util import tensor_transform
@ -85,7 +85,7 @@ class LocalObjectDetector(ObjectDetector):
return self.detect_api.detect_raw(tensor_input=tensor_input) return self.detect_api.detect_raw(tensor_input=tensor_input)
class DetectorRunner(util.Process): class DetectorRunner(FrigateProcess):
def __init__( def __init__(
self, self,
name, name,
@ -172,7 +172,7 @@ class ObjectDetectProcess:
self.detection_queue = detection_queue self.detection_queue = detection_queue
self.avg_inference_speed = Value("d", 0.01) self.avg_inference_speed = Value("d", 0.01)
self.detection_start = Value("d", 0.0) self.detection_start = Value("d", 0.0)
self.detect_process: util.Process | None = None self.detect_process: FrigateProcess | None = None
self.config = config self.config = config
self.detector_config = detector_config self.detector_config = detector_config
self.start_or_restart() self.start_or_restart()
@ -195,7 +195,7 @@ class ObjectDetectProcess:
if (self.detect_process is not None) and self.detect_process.is_alive(): if (self.detect_process is not None) and self.detect_process.is_alive():
self.stop() self.stop()
self.detect_process = DetectorRunner( self.detect_process = DetectorRunner(
f"detector:{self.name}", f"frigate.detector:{self.name}",
self.detection_queue, self.detection_queue,
self.cameras, self.cameras,
self.avg_inference_speed, self.avg_inference_speed,

View File

@ -14,7 +14,6 @@ from ws4py.server.wsgirefserver import (
) )
from ws4py.server.wsgiutils import WebSocketWSGIApplication from ws4py.server.wsgiutils import WebSocketWSGIApplication
import frigate.util as util
from frigate.comms.detections_updater import DetectionSubscriber, DetectionTypeEnum from frigate.comms.detections_updater import DetectionSubscriber, DetectionTypeEnum
from frigate.comms.ws import WebSocket from frigate.comms.ws import WebSocket
from frigate.config import FrigateConfig from frigate.config import FrigateConfig
@ -27,6 +26,7 @@ from frigate.output.birdseye import Birdseye
from frigate.output.camera import JsmpegCamera from frigate.output.camera import JsmpegCamera
from frigate.output.preview import PreviewRecorder from frigate.output.preview import PreviewRecorder
from frigate.util.image import SharedMemoryFrameManager, get_blank_yuv_frame from frigate.util.image import SharedMemoryFrameManager, get_blank_yuv_frame
from frigate.util.process import FrigateProcess
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -71,7 +71,7 @@ def check_disabled_camera_update(
birdseye.all_cameras_disabled() birdseye.all_cameras_disabled()
class OutputProcess(util.Process): class OutputProcess(FrigateProcess):
def __init__(self, config: FrigateConfig) -> None: def __init__(self, config: FrigateConfig) -> None:
super().__init__(name="frigate.output", daemon=True) super().__init__(name="frigate.output", daemon=True)
self.config = config self.config = config

View File

@ -7,7 +7,7 @@ from playhouse.sqliteq import SqliteQueueDatabase
from frigate.config import FrigateConfig from frigate.config import FrigateConfig
from frigate.models import Recordings, ReviewSegment from frigate.models import Recordings, ReviewSegment
from frigate.record.maintainer import RecordingMaintainer from frigate.record.maintainer import RecordingMaintainer
from frigate.util import Process as FrigateProcess from frigate.util.process import FrigateProcess
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@ -2,14 +2,14 @@
import logging import logging
import frigate.util as util
from frigate.config import FrigateConfig from frigate.config import FrigateConfig
from frigate.review.maintainer import ReviewSegmentMaintainer from frigate.review.maintainer import ReviewSegmentMaintainer
from frigate.util.process import FrigateProcess
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
class ReviewProcess(util.Process): class ReviewProcess(FrigateProcess):
def __init__(self, config: FrigateConfig) -> None: def __init__(self, config: FrigateConfig) -> None:
super().__init__(name="frigate.review_segment_manager", daemon=True) super().__init__(name="frigate.review_segment_manager", daemon=True)
self.config = config self.config = config

View File

@ -1,3 +0,0 @@
from .process import Process
__all__ = ["Process"]

View File

@ -14,7 +14,7 @@ from frigate.comms.embeddings_updater import EmbeddingsRequestEnum, EmbeddingsRe
from frigate.comms.inter_process import InterProcessRequestor from frigate.comms.inter_process import InterProcessRequestor
from frigate.const import CLIPS_DIR, MODEL_CACHE_DIR, UPDATE_MODEL_STATE from frigate.const import CLIPS_DIR, MODEL_CACHE_DIR, UPDATE_MODEL_STATE
from frigate.types import ModelStatusTypesEnum from frigate.types import ModelStatusTypesEnum
from frigate.util import Process from frigate.util.process import FrigateProcess
BATCH_SIZE = 16 BATCH_SIZE = 16
EPOCHS = 50 EPOCHS = 50
@ -144,7 +144,7 @@ def kickoff_model_training(
# run training in sub process so that # run training in sub process so that
# tensorflow will free CPU / GPU memory # tensorflow will free CPU / GPU memory
# upon training completion # upon training completion
training_process = Process( training_process = FrigateProcess(
target=__train_classification_model, target=__train_classification_model,
name=f"model_training:{model_name}", name=f"model_training:{model_name}",
args=(model_name,), args=(model_name,),

View File

@ -39,7 +39,7 @@ class BaseProcess(mp.Process):
pass pass
class Process(BaseProcess): class FrigateProcess(BaseProcess):
logger: logging.Logger logger: logging.Logger
@property @property

View File

@ -11,7 +11,6 @@ from typing import Any
import cv2 import cv2
import frigate.util as util
from frigate.camera import CameraMetrics, PTZMetrics from frigate.camera import CameraMetrics, PTZMetrics
from frigate.comms.inter_process import InterProcessRequestor from frigate.comms.inter_process import InterProcessRequestor
from frigate.config import CameraConfig, DetectConfig, ModelConfig from frigate.config import CameraConfig, DetectConfig, ModelConfig
@ -51,6 +50,7 @@ from frigate.util.object import (
is_object_filtered, is_object_filtered,
reduce_detections, reduce_detections,
) )
from frigate.util.process import FrigateProcess
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -437,7 +437,7 @@ class CameraCaptureRunner(threading.Thread):
) )
class CameraCapture(util.Process): class CameraCapture(FrigateProcess):
def __init__( def __init__(
self, config: CameraConfig, shm_frame_count: int, camera_metrics: CameraMetrics self, config: CameraConfig, shm_frame_count: int, camera_metrics: CameraMetrics
) -> None: ) -> None:
@ -461,7 +461,7 @@ class CameraCapture(util.Process):
camera_watchdog.join() camera_watchdog.join()
class CameraTracker(util.Process): class CameraTracker(FrigateProcess):
def __init__( def __init__(
self, self,
config: CameraConfig, config: CameraConfig,