fix scheduler
This commit is contained in:
parent
07a6abde0e
commit
65975235d4
@ -187,9 +187,9 @@ class Command(metaclass=Singleton):
|
|||||||
if event:
|
if event:
|
||||||
logger.info(f"处理事件:{event.event_type} - {handlers}")
|
logger.info(f"处理事件:{event.event_type} - {handlers}")
|
||||||
for handler in handlers:
|
for handler in handlers:
|
||||||
|
names = handler.__qualname__.split(".")
|
||||||
|
[class_name, method_name] = names
|
||||||
try:
|
try:
|
||||||
names = handler.__qualname__.split(".")
|
|
||||||
[class_name, method_name] = names
|
|
||||||
if class_name in self.pluginmanager.get_plugin_ids():
|
if class_name in self.pluginmanager.get_plugin_ids():
|
||||||
# 插件事件
|
# 插件事件
|
||||||
self.threader.submit(
|
self.threader.submit(
|
||||||
@ -222,7 +222,7 @@ class Command(metaclass=Singleton):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"事件处理出错:{str(e)} - {traceback.format_exc()}")
|
logger.error(f"事件处理出错:{str(e)} - {traceback.format_exc()}")
|
||||||
self.messagehelper.put(title=f"{event.event_type} 事件处理出错",
|
self.messagehelper.put(title=f"{event.event_type} 事件处理出错",
|
||||||
message=str(e),
|
message=f"{class_name}.{method_name}:{str(e)}",
|
||||||
role="system")
|
role="system")
|
||||||
|
|
||||||
def __run_command(self, command: Dict[str, any],
|
def __run_command(self, command: Dict[str, any],
|
||||||
|
@ -75,6 +75,9 @@ class Scheduler(metaclass=Singleton):
|
|||||||
# 最大重试次数
|
# 最大重试次数
|
||||||
__max_try__ = 30
|
__max_try__ = 30
|
||||||
if self._auth_count > __max_try__:
|
if self._auth_count > __max_try__:
|
||||||
|
SchedulerChain().messagehelper.put(title=f"用户认证失败",
|
||||||
|
message="用户认证失败次数过多,将不再偿试认证!",
|
||||||
|
role="system")
|
||||||
return
|
return
|
||||||
logger.info("用户未认证,正在偿试重新认证...")
|
logger.info("用户未认证,正在偿试重新认证...")
|
||||||
status, msg = SitesHelper().check_user()
|
status, msg = SitesHelper().check_user()
|
||||||
@ -97,18 +100,22 @@ class Scheduler(metaclass=Singleton):
|
|||||||
# 各服务的运行状态
|
# 各服务的运行状态
|
||||||
self._jobs = {
|
self._jobs = {
|
||||||
"cookiecloud": {
|
"cookiecloud": {
|
||||||
|
"name": "同步CookieCloud站点",
|
||||||
"func": SiteChain().sync_cookies,
|
"func": SiteChain().sync_cookies,
|
||||||
"running": False,
|
"running": False,
|
||||||
},
|
},
|
||||||
"mediaserver_sync": {
|
"mediaserver_sync": {
|
||||||
|
"name": "同步媒体服务器",
|
||||||
"func": MediaServerChain().sync,
|
"func": MediaServerChain().sync,
|
||||||
"running": False,
|
"running": False,
|
||||||
},
|
},
|
||||||
"subscribe_tmdb": {
|
"subscribe_tmdb": {
|
||||||
|
"name": "订阅元数据更新",
|
||||||
"func": SubscribeChain().check,
|
"func": SubscribeChain().check,
|
||||||
"running": False,
|
"running": False,
|
||||||
},
|
},
|
||||||
"subscribe_search": {
|
"subscribe_search": {
|
||||||
|
"name": "订阅搜索补全",
|
||||||
"func": SubscribeChain().search,
|
"func": SubscribeChain().search,
|
||||||
"running": False,
|
"running": False,
|
||||||
"kwargs": {
|
"kwargs": {
|
||||||
@ -116,6 +123,7 @@ class Scheduler(metaclass=Singleton):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"new_subscribe_search": {
|
"new_subscribe_search": {
|
||||||
|
"name": "新增订阅搜索",
|
||||||
"func": SubscribeChain().search,
|
"func": SubscribeChain().search,
|
||||||
"running": False,
|
"running": False,
|
||||||
"kwargs": {
|
"kwargs": {
|
||||||
@ -123,16 +131,34 @@ class Scheduler(metaclass=Singleton):
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"subscribe_refresh": {
|
"subscribe_refresh": {
|
||||||
|
"name": "订阅刷新",
|
||||||
"func": SubscribeChain().refresh,
|
"func": SubscribeChain().refresh,
|
||||||
"running": False,
|
"running": False,
|
||||||
},
|
},
|
||||||
"transfer": {
|
"transfer": {
|
||||||
|
"name": "下载文件整理",
|
||||||
"func": TransferChain().process,
|
"func": TransferChain().process,
|
||||||
"running": False,
|
"running": False,
|
||||||
},
|
},
|
||||||
"clear_cache": {
|
"clear_cache": {
|
||||||
|
"name": "缓存清理",
|
||||||
"func": clear_cache,
|
"func": clear_cache,
|
||||||
"running": False,
|
"running": False,
|
||||||
|
},
|
||||||
|
"user_auth": {
|
||||||
|
"name": "用户认证检查",
|
||||||
|
"func": user_auth,
|
||||||
|
"running": False,
|
||||||
|
},
|
||||||
|
"scheduler_job": {
|
||||||
|
"name": "公共定时服务",
|
||||||
|
"func": SchedulerChain().scheduler_job,
|
||||||
|
"running": False,
|
||||||
|
},
|
||||||
|
"random_wallpager": {
|
||||||
|
"name": "壁纸缓存",
|
||||||
|
"func": TmdbChain().get_random_wallpager,
|
||||||
|
"running": False,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,17 +289,27 @@ class Scheduler(metaclass=Singleton):
|
|||||||
|
|
||||||
# 后台刷新TMDB壁纸
|
# 后台刷新TMDB壁纸
|
||||||
self._scheduler.add_job(
|
self._scheduler.add_job(
|
||||||
TmdbChain().get_random_wallpager,
|
self.start,
|
||||||
"interval",
|
"interval",
|
||||||
|
id="random_wallpager",
|
||||||
|
name="壁纸缓存",
|
||||||
minutes=30,
|
minutes=30,
|
||||||
next_run_time=datetime.now(pytz.timezone(settings.TZ)) + timedelta(seconds=3)
|
next_run_time=datetime.now(pytz.timezone(settings.TZ)) + timedelta(seconds=3),
|
||||||
|
kwargs={
|
||||||
|
'job_id': 'random_wallpager'
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
# 公共定时服务
|
# 公共定时服务
|
||||||
self._scheduler.add_job(
|
self._scheduler.add_job(
|
||||||
SchedulerChain().scheduler_job,
|
self.start,
|
||||||
"interval",
|
"interval",
|
||||||
minutes=10
|
id="scheduler_job",
|
||||||
|
name="公共定时服务",
|
||||||
|
minutes=10,
|
||||||
|
kwargs={
|
||||||
|
'job_id': 'scheduler_job'
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
# 缓存清理服务,每隔24小时
|
# 缓存清理服务,每隔24小时
|
||||||
@ -290,9 +326,14 @@ class Scheduler(metaclass=Singleton):
|
|||||||
|
|
||||||
# 定时检查用户认证,每隔10分钟
|
# 定时检查用户认证,每隔10分钟
|
||||||
self._scheduler.add_job(
|
self._scheduler.add_job(
|
||||||
user_auth,
|
self.start,
|
||||||
"interval",
|
"interval",
|
||||||
minutes=10
|
id="user_auth",
|
||||||
|
name="用户认证检查",
|
||||||
|
minutes=10,
|
||||||
|
kwargs={
|
||||||
|
'job_id': 'user_auth'
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
# 注册插件公共服务
|
# 注册插件公共服务
|
||||||
@ -314,8 +355,9 @@ class Scheduler(metaclass=Singleton):
|
|||||||
job = self._jobs.get(job_id)
|
job = self._jobs.get(job_id)
|
||||||
if not job:
|
if not job:
|
||||||
return
|
return
|
||||||
|
job_name = job.get("name")
|
||||||
if job.get("running"):
|
if job.get("running"):
|
||||||
logger.warning(f"定时任务 {job_id} 正在运行 ...")
|
logger.warning(f"定时任务 {job_id} - {job_name} 正在运行 ...")
|
||||||
return
|
return
|
||||||
self._jobs[job_id]["running"] = True
|
self._jobs[job_id]["running"] = True
|
||||||
# 开始运行
|
# 开始运行
|
||||||
@ -324,8 +366,8 @@ class Scheduler(metaclass=Singleton):
|
|||||||
kwargs = job.get("kwargs") or {}
|
kwargs = job.get("kwargs") or {}
|
||||||
job["func"](*args, **kwargs)
|
job["func"](*args, **kwargs)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"定时任务 {job_id} 执行失败:{str(e)} - {traceback.format_exc()}")
|
logger.error(f"定时任务 {job_name} 执行失败:{str(e)} - {traceback.format_exc()}")
|
||||||
SchedulerChain().messagehelper.put(title=f"定时任务 {job_id} 执行失败",
|
SchedulerChain().messagehelper.put(title=f"{job_name} 执行失败",
|
||||||
message=str(e),
|
message=str(e),
|
||||||
role="system")
|
role="system")
|
||||||
# 运行结束
|
# 运行结束
|
||||||
|
Loading…
x
Reference in New Issue
Block a user