def run(self): while not self.stop_event.is_set(): try: event_type, camera, event_data = self.event_queue.get( timeout=10) except queue.Empty: if not self.stop_event.is_set(): self.refresh_cache() continue logger.debug( f"Event received: {event_type} {camera} {event_data['id']}") self.refresh_cache() if event_type == "start": self.events_in_process[event_data["id"]] = event_data if event_type == "end": clips_config = self.config.cameras[camera].clips clip_created = False if self.should_create_clip(camera, event_data): if clips_config.enabled and (clips_config.objects is None or event_data["label"] in clips_config.objects): clip_created = self.create_clip( camera, event_data, clips_config.pre_capture, clips_config.post_capture, ) if clip_created or event_data["has_snapshot"]: Event.create( id=event_data["id"], label=event_data["label"], camera=camera, start_time=event_data["start_time"], end_time=event_data["end_time"], top_score=event_data["top_score"], false_positive=event_data["false_positive"], zones=list(event_data["entered_zones"]), thumbnail=event_data["thumbnail"], has_clip=clip_created, has_snapshot=event_data["has_snapshot"], ) del self.events_in_process[event_data["id"]] self.event_processed_queue.put((event_data["id"], camera)) logger.info(f"Exiting event processor...")
def run(self): while True: if self.stop_event.is_set(): logger.info(f"Exiting event processor...") break try: event_type, camera, event_data = self.event_queue.get( timeout=10) except queue.Empty: if not self.stop_event.is_set(): self.refresh_cache() continue logger.debug( f"Event received: {event_type} {camera} {event_data['id']}") self.refresh_cache() if event_type == 'start': self.events_in_process[event_data['id']] = event_data if event_type == 'end': clips_config = self.config.cameras[camera].clips if not event_data['false_positive']: clip_created = False if clips_config.enabled and (clips_config.objects is None or event_data['label'] in clips_config.objects): clip_created = self.create_clip( camera, event_data, clips_config.pre_capture, clips_config.post_capture) Event.create( id=event_data['id'], label=event_data['label'], camera=camera, start_time=event_data['start_time'], end_time=event_data['end_time'], top_score=event_data['top_score'], false_positive=event_data['false_positive'], zones=list(event_data['entered_zones']), thumbnail=event_data['thumbnail'], has_clip=clip_created, has_snapshot=event_data['has_snapshot'], ) del self.events_in_process[event_data['id']] self.event_processed_queue.put((event_data['id'], camera))
def run(self): while not self.stop_event.is_set(): try: event_type, camera, event_data = self.event_queue.get( timeout=10) except queue.Empty: continue logger.debug( f"Event received: {event_type} {camera} {event_data['id']}") if event_type == "start": self.events_in_process[event_data["id"]] = event_data if event_type == "end": event_config: EventsConfig = self.config.cameras[ camera].record.events if event_data["has_clip"] or event_data["has_snapshot"]: Event.create( id=event_data["id"], label=event_data["label"], camera=camera, start_time=event_data["start_time"] - event_config.pre_capture, end_time=event_data["end_time"] + event_config.post_capture, top_score=event_data["top_score"], false_positive=event_data["false_positive"], zones=list(event_data["entered_zones"]), thumbnail=event_data["thumbnail"], region=event_data["region"], box=event_data["box"], area=event_data["area"], has_clip=event_data["has_clip"], has_snapshot=event_data["has_snapshot"], ) del self.events_in_process[event_data["id"]] self.event_processed_queue.put((event_data["id"], camera)) logger.info(f"Exiting event processor...")