mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-15 07:35:27 +03:00
debug timeouts
This commit is contained in:
parent
f58e230122
commit
0e312af43b
@ -70,11 +70,14 @@ class EmbeddingMaintainer(threading.Thread):
|
|||||||
|
|
||||||
def _process_updates(self) -> None:
|
def _process_updates(self) -> None:
|
||||||
"""Process event updates"""
|
"""Process event updates"""
|
||||||
update = self.event_subscriber.check_for_update()
|
logger.info("processing event updates")
|
||||||
|
update = self.event_subscriber.check_for_update(timeout=1)
|
||||||
|
|
||||||
if update is None:
|
if update is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
logger.info("not returning from _process_updates")
|
||||||
|
|
||||||
source_type, _, camera, data = update
|
source_type, _, camera, data = update
|
||||||
|
|
||||||
if not camera or source_type != EventTypeEnum.tracked_object:
|
if not camera or source_type != EventTypeEnum.tracked_object:
|
||||||
@ -98,67 +101,68 @@ class EmbeddingMaintainer(threading.Thread):
|
|||||||
|
|
||||||
def _process_finalized(self) -> None:
|
def _process_finalized(self) -> None:
|
||||||
"""Process the end of an event."""
|
"""Process the end of an event."""
|
||||||
while True:
|
|
||||||
ended = self.event_end_subscriber.check_for_update()
|
|
||||||
|
|
||||||
if ended == None:
|
logger.info("processing finalized")
|
||||||
break
|
ended = self.event_end_subscriber.check_for_update(timeout=1)
|
||||||
|
|
||||||
event_id, camera, updated_db = ended
|
if ended is None:
|
||||||
camera_config = self.config.cameras[camera]
|
return
|
||||||
|
|
||||||
if updated_db:
|
logger.info("not returning from _process_finalized")
|
||||||
try:
|
event_id, camera, updated_db = ended
|
||||||
event: Event = Event.get(Event.id == event_id)
|
camera_config = self.config.cameras[camera]
|
||||||
except DoesNotExist:
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Skip the event if not an object
|
if updated_db:
|
||||||
if event.data.get("type") != "object":
|
try:
|
||||||
continue
|
event: Event = Event.get(Event.id == event_id)
|
||||||
|
except DoesNotExist:
|
||||||
|
return
|
||||||
|
|
||||||
# Extract valid event metadata
|
# Skip the event if not an object
|
||||||
metadata = get_metadata(event)
|
if event.data.get("type") != "object":
|
||||||
thumbnail = base64.b64decode(event.thumbnail)
|
return
|
||||||
|
|
||||||
# Embed the thumbnail
|
# Extract valid event metadata
|
||||||
self._embed_thumbnail(event_id, thumbnail, metadata)
|
metadata = get_metadata(event)
|
||||||
|
thumbnail = base64.b64decode(event.thumbnail)
|
||||||
|
|
||||||
if (
|
# Embed the thumbnail
|
||||||
camera_config.genai.enabled
|
self._embed_thumbnail(event_id, thumbnail, metadata)
|
||||||
and self.genai_client is not None
|
|
||||||
and event.data.get("description") is None
|
|
||||||
):
|
|
||||||
# Generate the description. Call happens in a thread since it is network bound.
|
|
||||||
threading.Thread(
|
|
||||||
target=self._embed_description,
|
|
||||||
name=f"_embed_description_{event.id}",
|
|
||||||
daemon=True,
|
|
||||||
args=(
|
|
||||||
event,
|
|
||||||
[
|
|
||||||
data["thumbnail"]
|
|
||||||
for data in self.tracked_events[event_id]
|
|
||||||
]
|
|
||||||
if len(self.tracked_events.get(event_id, [])) > 0
|
|
||||||
else [thumbnail],
|
|
||||||
metadata,
|
|
||||||
),
|
|
||||||
).start()
|
|
||||||
|
|
||||||
# Delete tracked events based on the event_id
|
if (
|
||||||
if event_id in self.tracked_events:
|
camera_config.genai.enabled
|
||||||
del self.tracked_events[event_id]
|
and self.genai_client is not None
|
||||||
|
and event.data.get("description") is None
|
||||||
|
):
|
||||||
|
# Generate the description. Call happens in a thread since it is network bound.
|
||||||
|
threading.Thread(
|
||||||
|
target=self._embed_description,
|
||||||
|
name=f"_embed_description_{event.id}",
|
||||||
|
daemon=True,
|
||||||
|
args=(
|
||||||
|
event,
|
||||||
|
[data["thumbnail"] for data in self.tracked_events[event_id]]
|
||||||
|
if len(self.tracked_events.get(event_id, [])) > 0
|
||||||
|
else [thumbnail],
|
||||||
|
metadata,
|
||||||
|
),
|
||||||
|
).start()
|
||||||
|
|
||||||
|
# Delete tracked events based on the event_id
|
||||||
|
if event_id in self.tracked_events:
|
||||||
|
del self.tracked_events[event_id]
|
||||||
|
|
||||||
def _process_event_metadata(self):
|
def _process_event_metadata(self):
|
||||||
# Check for regenerate description requests
|
# Check for regenerate description requests
|
||||||
logger.info("processing event metadata")
|
logger.info("processing event metadata")
|
||||||
(topic, event_id) = self.event_metadata_subscriber.check_for_update()
|
(topic, event_id) = self.event_metadata_subscriber.check_for_update(timeout=1)
|
||||||
logger.info(f"in init in maintainer, {topic} {event_id}")
|
logger.info(f"in init in maintainer, {topic} {event_id}")
|
||||||
|
|
||||||
if topic is None:
|
if topic is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
logger.info("not returning from _process_event_metadata")
|
||||||
|
|
||||||
if event_id:
|
if event_id:
|
||||||
logger.info(f"in maintainer: {event_id}")
|
logger.info(f"in maintainer: {event_id}")
|
||||||
# self.handle_regenerate_description(event_id)
|
# self.handle_regenerate_description(event_id)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user