This repository was archived by the owner on Nov 13, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +15
-2
lines changed
Expand file tree Collapse file tree 1 file changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -94,7 +94,12 @@ class InstanceControlSubsystem {
9494 if ( ! this . checkTask ( key , task . name ) ) throw new Error ( "已存在重复的任务" ) ;
9595 let job : IScheduleJob ;
9696 if ( needStore ) logger . info ( `创建计划任务 ${ task . name } :\n${ JSON . stringify ( task ) } ` ) ;
97+
98+ // 最小间隔时间检查
9799 if ( task . type === 1 ) {
100+ let internalTime = Number ( task . time ) ;
101+ if ( isNaN ( internalTime ) || internalTime < 1 ) internalTime = 1 ;
102+
98103 // task.type=1: 时间间隔型计划任务,采用内置定时器实现
99104 job = new IntervalJob ( ( ) => {
100105 this . action ( task ) ;
@@ -106,9 +111,17 @@ class InstanceControlSubsystem {
106111 task . count -- ;
107112 this . updateTaskConfig ( key , task . name , task ) ;
108113 }
109- } , Number ( task . time ) ) ;
114+ } , internalTime ) ;
110115 } else {
111- // task.type=1: 指定时间型计划任务,采用 node-schedule 库实现
116+ // 表达式合法性检查: 8 19 14 * * 1,2,3,4
117+ const timeArray = task . time . split ( " " ) ;
118+ const checkIndex = [ 0 , 1 , 2 ] ;
119+ checkIndex . forEach ( ( item ) => {
120+ if ( isNaN ( Number ( timeArray [ item ] ) ) && Number ( timeArray [ item ] ) >= 0 ) {
121+ throw new Error ( `计划任务创建错误,不正确的时间表达式: \n${ task . name } : ${ timeArray } \n请尝试删除 data/TaskConfig/${ task . name } .json 文件解决此问题` ) ;
122+ }
123+ } ) ;
124+ // task.type=2: 指定时间型计划任务,采用 node-schedule 库实现
112125 job = schedule . scheduleJob ( task . time , ( ) => {
113126 this . action ( task ) ;
114127 if ( task . count === - 1 ) return ;
You can’t perform that action at this time.
0 commit comments