from .AiInstance import AiInstance from ..models import AiConfig class AiService: # Singleton # def __new__(cls): # if not hasattr(cls, 'instance'): # cls.instance = super(AiService, cls).__new__(cls) # return cls.instance def __init__(self): self.instances: [AiInstance] = [] print('Initializing AiService') def get_configurations(self) -> [AiConfig]: return AiConfig.objects.filter() def get_instances(self) -> [AiInstance]: self.__ensure_instances_inited__() return self.instances def get_instance(self, name: str) -> AiInstance: return [i for i in self.get_instances() if i.configuration.name == name][0] def __ensure_instances_inited__(self): for config in self.get_configurations(): if len([i for i in self.instances if i.configuration.name == config.name]) == 0: self.instances.append(AiInstance(config)) def __del__(self): print('Destructing AiService') for instance in self.instances: del instance