feat:线上插件多线程加载
This commit is contained in:
parent
761f1e7a4b
commit
92a5b3d227
@ -119,13 +119,13 @@ class PluginManager(metaclass=Singleton):
|
|||||||
"""
|
"""
|
||||||
if SystemUtils.is_frozen():
|
if SystemUtils.is_frozen():
|
||||||
return
|
return
|
||||||
logger.info("开始安装在线插件...")
|
logger.info("开始安装第三方插件...")
|
||||||
# 已安装插件
|
# 已安装插件
|
||||||
install_plugins = self.systemconfig.get(SystemConfigKey.UserInstalledPlugins) or []
|
install_plugins = self.systemconfig.get(SystemConfigKey.UserInstalledPlugins) or []
|
||||||
# 在线插件
|
# 在线插件
|
||||||
online_plugins = self.get_online_plugins()
|
online_plugins = self.get_online_plugins()
|
||||||
if not online_plugins:
|
if not online_plugins:
|
||||||
logger.error("未获取到在线插件")
|
logger.error("未获取到第三方插件")
|
||||||
return
|
return
|
||||||
# 支持更新的插件自动更新
|
# 支持更新的插件自动更新
|
||||||
for plugin in online_plugins:
|
for plugin in online_plugins:
|
||||||
@ -140,7 +140,7 @@ class PluginManager(metaclass=Singleton):
|
|||||||
f"插件 {plugin.get('plugin_name')} v{plugin.get('plugin_version')} 安装失败:{msg}")
|
f"插件 {plugin.get('plugin_name')} v{plugin.get('plugin_version')} 安装失败:{msg}")
|
||||||
continue
|
continue
|
||||||
logger.info(f"插件 {plugin.get('plugin_name')} 安装成功,版本:{plugin.get('plugin_version')}")
|
logger.info(f"插件 {plugin.get('plugin_name')} 安装成功,版本:{plugin.get('plugin_version')}")
|
||||||
logger.info("在线插件安装完成")
|
logger.info("第三方插件安装完成")
|
||||||
|
|
||||||
def get_plugin_config(self, pid: str) -> dict:
|
def get_plugin_config(self, pid: str) -> dict:
|
||||||
"""
|
"""
|
||||||
@ -359,20 +359,19 @@ class PluginManager(metaclass=Singleton):
|
|||||||
|
|
||||||
if not settings.PLUGIN_MARKET:
|
if not settings.PLUGIN_MARKET:
|
||||||
return []
|
return []
|
||||||
logger.info(f"开始获取第三方插件...")
|
|
||||||
# 返回值
|
# 返回值
|
||||||
all_plugins = []
|
all_plugins = []
|
||||||
# 已安装插件
|
# 已安装插件
|
||||||
installed_apps = self.systemconfig.get(SystemConfigKey.UserInstalledPlugins) or []
|
installed_apps = self.systemconfig.get(SystemConfigKey.UserInstalledPlugins) or []
|
||||||
# 使用多线程获取线上插件
|
# 使用多线程获取线上插件
|
||||||
executor = concurrent.futures.ThreadPoolExecutor()
|
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||||
futures = []
|
futures = []
|
||||||
for m in settings.PLUGIN_MARKET.split(","):
|
for m in settings.PLUGIN_MARKET.split(","):
|
||||||
futures.append(executor.submit(__get_plugin_info, m))
|
futures.append(executor.submit(__get_plugin_info, m))
|
||||||
for future in concurrent.futures.as_completed(futures):
|
for future in concurrent.futures.as_completed(futures):
|
||||||
plugins = future.result()
|
plugins = future.result()
|
||||||
if plugins:
|
if plugins:
|
||||||
all_plugins.extend(plugins)
|
all_plugins.extend(plugins)
|
||||||
logger.info(f"共获取到 {len(all_plugins)} 个第三方插件")
|
logger.info(f"共获取到 {len(all_plugins)} 个第三方插件")
|
||||||
# 按插件ID去重
|
# 按插件ID去重
|
||||||
return list({v["id"]: v for v in all_plugins}.values())
|
return list({v["id"]: v for v in all_plugins}.values())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user