fix(plugin): optimize release cache loading (#5966)

This commit is contained in:
InfinityPacer
2026-06-18 18:52:28 +08:00
committed by GitHub
parent d2e2435be7
commit 84eee40e81
5 changed files with 430 additions and 58 deletions

View File

@@ -1199,8 +1199,6 @@ class PluginManager(ConfigReloadMixin, metaclass=Singleton):
"""
if not settings.PLUGIN_MARKET:
return []
if force:
PluginHelper().get_plugin_release_versions.cache_clear()
# 用于存储高于 v1 版本的插件(如 v2, v3 等)
higher_version_plugins = []
@@ -1311,6 +1309,20 @@ class PluginManager(ConfigReloadMixin, metaclass=Singleton):
plugins.sort(key=lambda x: x.plugin_order if hasattr(x, "plugin_order") else 0)
return plugins
def get_local_plugin_version(self, pid: str) -> Optional[str]:
"""
获取指定已安装插件的本地版本,不触发全部插件的状态、页面和权限计算。
插件类由运行期动态加载,旧插件可能未声明版本属性,因此缺失时返回 None。
"""
installed_apps = SystemConfigOper().get(SystemConfigKey.UserInstalledPlugins) or []
if pid not in installed_apps:
return None
plugin_class = self._plugins.get(pid)
if not plugin_class:
return None
return getattr(plugin_class, "plugin_version", None)
def get_local_repo_plugins(self) -> List[schemas.Plugin]:
"""
获取本地插件仓库目录中的插件信息
@@ -1566,8 +1578,6 @@ class PluginManager(ConfigReloadMixin, metaclass=Singleton):
"""
if not settings.PLUGIN_MARKET:
return []
if force:
await PluginHelper().async_get_plugin_release_versions.cache_clear()
# 用于存储高于 v1 版本的插件(如 v2, v3 等)
higher_version_plugins = []