diff --git a/apps/common/config/embedding_config.py b/apps/common/config/embedding_config.py index 9f8a2f65a..69081be05 100644 --- a/apps/common/config/embedding_config.py +++ b/apps/common/config/embedding_config.py @@ -12,17 +12,31 @@ import time from common.cache.mem_cache import MemCache _lock = threading.Lock() +locks = {} class ModelManage: cache = MemCache('model', {}) up_clear_time = time.time() + @staticmethod + def _get_lock(_id): + lock = locks.get(_id) + if lock is None: + with _lock: + lock = locks.get(_id) + if lock is None: + lock = threading.Lock() + locks[_id] = lock + + return lock + @staticmethod def get_model(_id, get_model): model_instance = ModelManage.cache.get(_id) if model_instance is None: - with _lock: + lock = ModelManage._get_lock(_id) + with lock: model_instance = ModelManage.cache.get(_id) if model_instance is None: model_instance = get_model(_id)