diff --git a/frigate/video/detect.py b/frigate/video/detect.py index 591b57f97e..a9c17d33cb 100644 --- a/frigate/video/detect.py +++ b/frigate/video/detect.py @@ -2,10 +2,11 @@ import logging import queue +import random import threading import time from collections import deque -from datetime import UTC, datetime +from datetime import UTC, datetime, timedelta from multiprocessing import Queue from multiprocessing.synchronize import Event as MpEvent from typing import Any @@ -255,7 +256,9 @@ def process_frames( region_grid: list[list[dict[str, Any]]], exit_on_empty: bool = False, ): - next_region_update = get_tomorrow_at_time(2) + # cameras share one dispatcher, so stagger the daily grid rebuilds + region_update_offset = timedelta(seconds=random.randrange(3600)) + next_region_update = get_tomorrow_at_time(2) + region_update_offset config_subscriber = CameraConfigUpdateSubscriber( None, {camera_config.name: camera_config}, @@ -344,7 +347,7 @@ def process_frames( if updated_grid: region_grid = updated_grid - next_region_update = get_tomorrow_at_time(2) + next_region_update = get_tomorrow_at_time(2) + region_update_offset try: if exit_on_empty: