diff --git a/app/utils/singleton.py b/app/utils/singleton.py index 908b2ffd..057531d6 100644 --- a/app/utils/singleton.py +++ b/app/utils/singleton.py @@ -1,4 +1,5 @@ import abc +import threading class Singleton(abc.ABCMeta, type): @@ -7,12 +8,14 @@ class Singleton(abc.ABCMeta, type): """ _instances: dict = {} + _lock = threading.Lock() def __call__(cls, *args, **kwargs): key = (cls, args, frozenset(kwargs.items())) - if key not in cls._instances: - cls._instances[key] = super().__call__(*args, **kwargs) - return cls._instances[key] + with cls._lock: + if key not in cls._instances: + cls._instances[key] = super().__call__(*args, **kwargs) + return cls._instances[key] class AbstractSingleton(abc.ABC, metaclass=Singleton):