perf: reboot after installing plugin

This commit is contained in:
Soulter
2024-08-11 23:23:52 -04:00
parent 141c91301f
commit f8949ebead
3 changed files with 42 additions and 14 deletions
+6 -4
View File
@@ -192,10 +192,11 @@ class AstrBotDashBoard():
try:
logger.info(f"正在安装插件 {repo_url}")
self.plugin_manager.install_plugin(repo_url)
logger.info(f"安装插件 {repo_url} 成功")
threading.Thread(target=self.astrbot_updator._reboot, args=(2, self.context)).start()
logger.info(f"安装插件 {repo_url} 成功,2秒后重启")
return Response(
status="success",
message="安装成功~",
message="安装成功,机器人将在 2 秒内重启。",
data=None
).__dict__
except Exception as e:
@@ -258,10 +259,11 @@ class AstrBotDashBoard():
try:
logger.info(f"正在更新插件 {plugin_name}")
self.plugin_manager.update_plugin(plugin_name)
logger.info(f"更新插件 {plugin_name} 成功")
threading.Thread(target=self.astrbot_updator._reboot, args=(2, self.context)).start()
logger.info(f"更新插件 {plugin_name} 成功,2秒后重启")
return Response(
status="success",
message="更新成功~",
message="更新成功,机器人将在 2 秒内重启。",
data=None
).__dict__
except Exception as e:
+1 -1
View File
@@ -53,7 +53,7 @@ if __name__ == "__main__":
check_env()
logger = LogManager.GetLogger(
log_name='astrbot',
log_name='astrbot',
out_to_console=True,
custom_formatter=Formatter('[%(asctime)s| %(name)s - %(levelname)s|%(filename)s:%(lineno)d]: %(message)s', datefmt="%H:%M:%S")
)
+34 -8
View File
@@ -5,6 +5,7 @@ import traceback
import uuid
import shutil
import yaml
import subprocess
from util.updator.plugin_updator import PluginUpdator
from util.io import remove_dir, download_file
@@ -84,7 +85,27 @@ class PluginManager():
def update_plugin_dept(self, path):
mirror = "https://mirrors.aliyun.com/pypi/simple/"
py = sys.executable
os.system(f"{py} -m pip install -r {path} -i {mirror} --quiet")
# os.system(f"{py} -m pip install -r {path} -i {mirror} --break-system-package --trusted-host mirrors.aliyun.com")
process = subprocess.Popen(f"{py} -m pip install -r {path} -i {mirror} --break-system-package --trusted-host mirrors.aliyun.com",
stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, universal_newlines=True)
while True:
output = process.stdout.readline()
if output == '' and process.poll() is not None:
break
if output:
output = output.strip()
if output.startswith("Requirement already satisfied"):
continue
if output.startswith("Using cached"):
continue
if output.startswith("Looking in indexes"):
continue
logger.info(output)
rc = process.poll()
def install_plugin(self, repo_url: str):
ppath = self.plugin_store_path
@@ -96,9 +117,12 @@ class PluginManager():
with open(os.path.join(plugin_path, "REPO"), "w", encoding='utf-8') as f:
f.write(repo_url)
ok, err = self.plugin_reload()
if not ok:
raise Exception(err)
self.check_plugin_dept_update()
return plugin_path
# ok, err = self.plugin_reload()
# if not ok:
# raise Exception(err)
def download_from_repo_url(self, target_path: str, repo_url: str):
repo_namespace = repo_url.split("/")[-2:]
@@ -158,7 +182,7 @@ class PluginManager():
logger.info(f"正在加载插件 {root_dir_name} ...")
# self.check_plugin_dept_update(cached_plugins, root_dir_name)
self.check_plugin_dept_update(target_plugin=root_dir_name)
module = __import__("addons.plugins." +
root_dir_name + "." + p, fromlist=[p])
@@ -228,9 +252,11 @@ class PluginManager():
# remove the temp dir
remove_dir(temp_dir)
ok, err = self.plugin_reload()
if not ok:
raise Exception(err)
self.check_plugin_dept_update()
# ok, err = self.plugin_reload()
# if not ok:
# raise Exception(err)
def load_plugin_metadata(self, plugin_path: str, plugin_obj = None) -> PluginMetadata:
metadata = None