@yuo/node-cron

1.0.2 • Public • Published

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

Readme

Keywords

Package Sidebar

Install

npm i @yuo/node-cron

Weekly Downloads

4

Version

1.0.2

License

MIT

Unpacked Size

23.7 kB

Total Files

18

Last publish

Collaborators

  • fc1061393710
  • q788799660