fix 定时服务立即生效

fix #1615
This commit is contained in:
jxxghp 2024-03-08 16:22:53 +08:00
parent b5d7b6fb53
commit 851864cd49
4 changed files with 40 additions and 10 deletions

View File

@ -306,8 +306,8 @@ def reload_module(_: schemas.TokenPayload = Depends(verify_token)):
"""
重新加载模块
"""
ModuleManager().stop()
ModuleManager().load_modules()
ModuleManager().reload()
Scheduler().init()
return schemas.Response(success=True)

View File

@ -267,7 +267,10 @@ class Command(metaclass=Singleton):
停止事件处理线程
"""
self._event.set()
self._thread.join()
try:
self._thread.join()
except Exception as e:
logger.error(f"停止事件处理线程出错:{str(e)} - {traceback.format_exc()}")
def get_commands(self):
"""

View File

@ -51,6 +51,13 @@ class ModuleManager(metaclass=Singleton):
if hasattr(module, "stop"):
module.stop()
def reload(self):
"""
重新加载所有模块
"""
self.stop()
self.load_modules()
def test(self, modleid: str) -> Tuple[bool, str]:
"""
测试模块

View File

@ -39,16 +39,21 @@ class Scheduler(metaclass=Singleton):
定时任务管理
"""
# 定时服务
_scheduler = BackgroundScheduler(timezone=settings.TZ,
executors={
'default': ThreadPoolExecutor(100)
})
_scheduler = None
# 退出事件
_event = threading.Event()
# 锁
_lock = threading.Lock()
# 各服务的运行状态
_jobs = {}
def __init__(self):
self.init()
def init(self):
"""
初始化定时服务
"""
def clear_cache():
"""
@ -92,10 +97,19 @@ class Scheduler(metaclass=Singleton):
}
}
# 停止定时服务
self.stop()
# 调试模式不启动定时服务
if settings.DEV:
return
# 创建定时服务
self._scheduler = BackgroundScheduler(timezone=settings.TZ,
executors={
'default': ThreadPoolExecutor(100)
})
# CookieCloud定时同步
if settings.COOKIECLOUD_INTERVAL \
and str(settings.COOKIECLOUD_INTERVAL).isdigit():
@ -385,6 +399,12 @@ class Scheduler(metaclass=Singleton):
"""
关闭定时服务
"""
self._event.set()
if self._scheduler.running:
self._scheduler.shutdown()
try:
if self._scheduler:
self._event.set()
self._scheduler.remove_all_jobs()
if self._scheduler.running:
self._scheduler.shutdown()
self._scheduler = None
except Exception as e:
logger.error(f"停止定时任务失败::{str(e)} - {traceback.format_exc()}")