debug timeouts

This commit is contained in:
Josh Hawkins 2024-09-23 14:11:31 -05:00
parent f58e230122
commit 0e312af43b

View File

@ -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)