stop creating a config subscriber per capture thread (#24002)

This commit is contained in:
Josh Hawkins
2026-09-12 07:30:04 -06:00
committed by Nicolas Mowen
parent d78f6a7a98
commit f7c5500ea8
+5 -16
View File
@@ -54,18 +54,11 @@ def capture_frames(
skipped_eps = EventsPerSecond() skipped_eps = EventsPerSecond()
skipped_eps.start() skipped_eps.start()
config_subscriber = CameraConfigUpdateSubscriber(
None, {config.name: config}, [CameraConfigUpdateEnum.enabled]
)
def get_enabled_state():
"""Fetch the latest enabled state from ZMQ."""
config_subscriber.check_for_updates()
return config.enabled
try:
while not stop_event.is_set(): while not stop_event.is_set():
if not get_enabled_state(): # CameraWatchdog applies enabled updates onto this same CameraConfig
# before it stops ffmpeg. Do not subscribe here: it would be rebuilt per
# ffmpeg restart and strand a pipe in the idle main process config PUB.
if not config.enabled:
logger.debug(f"Stopping capture thread for disabled {config.name}") logger.debug(f"Stopping capture thread for disabled {config.name}")
break break
@@ -81,9 +74,7 @@ def capture_frames(
if stop_event.is_set(): if stop_event.is_set():
break break
logger.error( logger.error(f"{config.name}: Unable to read frames from ffmpeg process.")
f"{config.name}: Unable to read frames from ffmpeg process."
)
if ffmpeg_process.poll() is not None: if ffmpeg_process.poll() is not None:
logger.error( logger.error(
@@ -105,8 +96,6 @@ def capture_frames(
skipped_eps.update() skipped_eps.update()
frame_index = 0 if frame_index == shm_frame_count - 1 else frame_index + 1 frame_index = 0 if frame_index == shm_frame_count - 1 else frame_index + 1
finally:
config_subscriber.stop()
class CameraWatchdog(threading.Thread): class CameraWatchdog(threading.Thread):