35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
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
|