mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-04 23:17:20 +08:00
Merge pull request #3669 from Aqr-K/feature/plugin
This commit is contained in:
+8
-1
@@ -418,14 +418,21 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel):
|
|||||||
更新多个配置项
|
更新多个配置项
|
||||||
"""
|
"""
|
||||||
results = {}
|
results = {}
|
||||||
log_updated = False
|
log_updated, plugin_monitor_updated = False, False
|
||||||
for k, v in env.items():
|
for k, v in env.items():
|
||||||
results[k] = self.update_setting(k, v)
|
results[k] = self.update_setting(k, v)
|
||||||
if hasattr(log_settings, k):
|
if hasattr(log_settings, k):
|
||||||
log_updated = True
|
log_updated = True
|
||||||
|
if k in ["PLUGIN_AUTO_RELOAD", "DEV"]:
|
||||||
|
plugin_monitor_updated = True
|
||||||
# 本次更新存在日志配置项更新,需要重新加载日志配置
|
# 本次更新存在日志配置项更新,需要重新加载日志配置
|
||||||
if log_updated:
|
if log_updated:
|
||||||
logger.update_loggers()
|
logger.update_loggers()
|
||||||
|
# 本次更新存在插件监控配置项更新,需要重新加载插件监控
|
||||||
|
if plugin_monitor_updated:
|
||||||
|
# 解决顶层循环导入问题
|
||||||
|
from app.core.plugin import PluginManager
|
||||||
|
PluginManager().reload_monitor()
|
||||||
return results
|
return results
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|||||||
+18
-4
@@ -220,11 +220,23 @@ class PluginManager(metaclass=Singleton):
|
|||||||
self._running_plugins = {}
|
self._running_plugins = {}
|
||||||
logger.info("插件停止完成")
|
logger.info("插件停止完成")
|
||||||
|
|
||||||
|
def reload_monitor(self):
|
||||||
|
"""
|
||||||
|
重新加载插件文件修改监测
|
||||||
|
"""
|
||||||
|
if settings.DEV or settings.PLUGIN_AUTO_RELOAD:
|
||||||
|
if self._observer and self._observer.is_alive():
|
||||||
|
logger.info("插件文件修改监测已经在运行中...")
|
||||||
|
else:
|
||||||
|
self.__start_monitor()
|
||||||
|
else:
|
||||||
|
self.stop_monitor()
|
||||||
|
|
||||||
def __start_monitor(self):
|
def __start_monitor(self):
|
||||||
"""
|
"""
|
||||||
开发者模式下监测插件文件修改
|
启用监测插件文件修改监测
|
||||||
"""
|
"""
|
||||||
logger.info("开发者模式下开始监测插件文件修改...")
|
logger.info("开始监测插件文件修改...")
|
||||||
monitor_handler = PluginMonitorHandler()
|
monitor_handler = PluginMonitorHandler()
|
||||||
self._observer = Observer()
|
self._observer = Observer()
|
||||||
self._observer.schedule(monitor_handler, str(settings.ROOT_PATH / "app" / "plugins"), recursive=True)
|
self._observer.schedule(monitor_handler, str(settings.ROOT_PATH / "app" / "plugins"), recursive=True)
|
||||||
@@ -232,14 +244,16 @@ class PluginManager(metaclass=Singleton):
|
|||||||
|
|
||||||
def stop_monitor(self):
|
def stop_monitor(self):
|
||||||
"""
|
"""
|
||||||
停止监测插件修改
|
停止监测插件文件修改监测
|
||||||
"""
|
"""
|
||||||
# 停止监测
|
# 停止监测
|
||||||
if self._observer:
|
if self._observer and self._observer.is_alive():
|
||||||
logger.info("正在停止插件文件修改监测...")
|
logger.info("正在停止插件文件修改监测...")
|
||||||
self._observer.stop()
|
self._observer.stop()
|
||||||
self._observer.join()
|
self._observer.join()
|
||||||
logger.info("插件文件修改监测停止完成")
|
logger.info("插件文件修改监测停止完成")
|
||||||
|
else:
|
||||||
|
logger.info("未启用插件文件修改监测,无需停止")
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __stop_plugin(plugin: Any):
|
def __stop_plugin(plugin: Any):
|
||||||
|
|||||||
Reference in New Issue
Block a user