move to services and add env var

This commit is contained in:
Josh Hawkins 2025-07-11 07:57:49 -05:00
parent 0b131a2243
commit fcaff15795
2 changed files with 16 additions and 12 deletions

View File

@ -2,7 +2,6 @@ import datetime
import logging
import multiprocessing as mp
import os
import resource
import secrets
import shutil
from multiprocessing import Queue
@ -72,6 +71,7 @@ from frigate.timeline import TimelineProcessor
from frigate.util.builtin import empty_and_close_queue
from frigate.util.image import SharedMemoryFrameManager, UntrackedSharedMemory
from frigate.util.object import get_camera_regions_grid
from frigate.util.services import set_file_limit
from frigate.version import VERSION
from frigate.video import capture_camera, track_camera
from frigate.watchdog import FrigateWatchdog
@ -111,16 +111,6 @@ class FrigateApp:
else:
logger.debug(f"Skipping directory: {d}")
def set_file_limit(self, soft_limit: int) -> None:
current_soft, current_hard = resource.getrlimit(resource.RLIMIT_NOFILE)
logger.info(f"Current file limits - Soft: {current_soft}, Hard: {current_hard}")
new_soft = min(soft_limit, current_hard)
resource.setrlimit(resource.RLIMIT_NOFILE, (new_soft, current_hard))
logger.info(
f"File limit set. New soft limit: {new_soft}, Hard limit remains: {current_hard}"
)
def init_camera_metrics(self) -> None:
# create camera_metrics
for camera_name in self.config.cameras.keys():
@ -599,7 +589,7 @@ class FrigateApp:
self.ensure_dirs()
# Set soft file limits.
self.set_file_limit(65536)
set_file_limit()
# Start frigate services.
self.init_camera_metrics()

View File

@ -5,6 +5,7 @@ import json
import logging
import os
import re
import resource
import signal
import subprocess as sp
import traceback
@ -632,3 +633,16 @@ async def get_video_properties(
result["fourcc"] = fourcc
return result
def set_file_limit() -> None:
soft_limit = int(os.getenv("SOFT_FILE_LIMIT", "65536") or "65536")
current_soft, current_hard = resource.getrlimit(resource.RLIMIT_NOFILE)
logger.info(f"Current file limits - Soft: {current_soft}, Hard: {current_hard}")
new_soft = min(soft_limit, current_hard)
resource.setrlimit(resource.RLIMIT_NOFILE, (new_soft, current_hard))
logger.info(
f"File limit set. New soft limit: {new_soft}, Hard limit remains: {current_hard}"
)