@yuo/node-cron
v1.0.2
Published
task scheduler for glede-server
Downloads
6
Readme
Node Cron
下载并使用
npm install @yuo/node-cron
Cron 语法
Cron允许的字段
# ┌────────────── 秒 (可选)
# │ ┌──────────── 分
# │ │ ┌────────── 时
# │ │ │ ┌──────── 日
# │ │ │ │ ┌────── 月
# │ │ │ │ │ ┌──── 周 (0-7), 0和7表示周日
# │ │ │ │ │ │
# │ │ │ │ │ │
# * * * * * *
Cron各字段范围值
| field | value | |--------------|---------------------| | 秒 | 0-59 | | 分 | 0-59 | | 时 | 0-23 | | 日 | 1-31 | | 月 | 1-12 | | 周 | 0-7 (周日 0, 7 ) |
使用
使用时间范围
import { schedule } from '@yuo/node-cron';
cron.schedule('1,2,4,5 * * * *', () => {
console.log('在每小时中的第 1、2、4、5 的分钟整点各触发一次');
});
cron.schedule('1-5 * * * *', () => {
console.log('在每小时中的第1~5分钟中, 每分钟触发一次');
});
使用时间步进值
import { schedule } from '@yuo/node-cron';
schedule('*/2 * * * *', () => {
console.log('间隔2分钟执行一次');
});
schedule('10/2 * * * * *', () => {
console.log('从每分钟的第10秒开始, 间隔2秒钟执行一次');
});
启动任务
import { schedule } from '@yuo/node-cron';
// 默认scheduled: true, 是直接开启的, 不需要手动start
const task1 = schedule('* * * * *', (flag: string) => {
// doSomething
if (flag === 'manual') {
// 检测到手动触发后, 注销事务
task1.stop();
}
}, { scheduled: false });
task1.start();
task1.now('manual');
// fork子进程启动, 相对于根目录(node启动时的目录)
const task2 = schedule('* * * * *', './schedule-1.ts');
// ./schedule-1.ts, 文件形式的事务无入参
import { yourNBUtil } from 'util';
export default () => {
let shit = yourNBUtil.doSomething();
};
暂停任务
import { schedule } from '@yuo/node-cron';
const task = schedule('* * * * *', () => {
console.log('will execute every minute until stopped');
});
task.stop();
验证Cron规则
import { validate } from '@yuo/node-cron';
const res1 = validate('59 * * * *'); // valid
const res2 = validate('60 * * * *'); // invalid 0~59