瀏覽代碼

fix: reduce model provider fetchs

Yeuoly 5 月之前
父節點
當前提交
1b21d7513d
共有 2 個文件被更改,包括 7 次插入2 次删除
  1. 1 1
      api/contexts/__init__.py
  2. 6 1
      api/core/model_runtime/model_providers/model_provider_factory.py

+ 1 - 1
api/contexts/__init__.py

@@ -15,5 +15,5 @@ workflow_variable_pool: ContextVar["VariablePool"] = ContextVar("workflow_variab
 plugin_tool_providers: ContextVar[dict[str, "PluginToolProviderController"]] = ContextVar("plugin_tool_providers")
 plugin_tool_providers_lock: ContextVar[Lock] = ContextVar("plugin_tool_providers_lock")
 
-plugin_model_providers: ContextVar[list["PluginModelProviderEntity"]] = ContextVar("plugin_model_providers")
+plugin_model_providers: ContextVar[list["PluginModelProviderEntity"] | None] = ContextVar("plugin_model_providers")
 plugin_model_providers_lock: ContextVar[Lock] = ContextVar("plugin_model_providers_lock")

+ 6 - 1
api/core/model_runtime/model_providers/model_provider_factory.py

@@ -77,11 +77,16 @@ class ModelProviderFactory:
         try:
             contexts.plugin_model_providers.get()
         except LookupError:
-            contexts.plugin_model_providers.set([])
+            contexts.plugin_model_providers.set(None)
             contexts.plugin_model_providers_lock.set(Lock())
 
         with contexts.plugin_model_providers_lock.get():
             plugin_model_providers = contexts.plugin_model_providers.get()
+            if plugin_model_providers is not None:
+                return plugin_model_providers
+
+            plugin_model_providers = []
+            contexts.plugin_model_providers.set(plugin_model_providers)
 
             # Fetch plugin model providers
             plugin_providers = self.plugin_model_manager.fetch_model_providers(self.tenant_id)