返回

巧用egg 定时任务, 让你的脚本按时运行!

前端

egg定时任务简介

egg 定时任务是基于 Node.js 内置的定时器模块实现的,它提供了一种简单易用的方式来创建和管理定时任务。你可以使用定时任务来实现各种自动化任务,例如:

  • 定期备份数据库
  • 发送定期报告
  • 清理临时文件
  • 执行数据分析任务
  • 等等

创建定时任务

要创建定时任务,你需要在你的 egg 应用中创建一个 app/schedule.js 文件。这个文件将用于定义你的定时任务。在 app/schedule.js 文件中,你需要首先导入 schedule 模块,然后定义你的定时任务。

const schedule = require('node-schedule');

// 每分钟执行一次任务
schedule.scheduleJob('*/1 * * * *', () => {
  console.log('每分钟执行一次');
});

// 每天早上8点执行一次任务
schedule.scheduleJob('0 8 * * *', () => {
  console.log('每天早上8点执行一次');
});

// 每月1号凌晨12点执行一次任务
schedule.scheduleJob('0 0 1 * *', () => {
  console.log('每月1号凌晨12点执行一次');
});

// 每年1月1日凌晨12点执行一次任务
schedule.scheduleJob('0 0 0 1 1', () => {
  console.log('每年1月1日凌晨12点执行一次');
});

定时任务的表达式

在定时任务的定义中,你需要指定一个表达式来告诉定时任务何时执行。这个表达式可以是任何符合cron表达式的字符串。cron表达式是一个非常强大的工具,它可以让你非常灵活地定义你的定时任务。

cron表达式的语法如下:

* * * * *

其中,每个星号代表一个时间域。第一个星号代表秒,第二个星号代表分钟,第三个星号代表小时,第四个星号代表天,第五个星号代表月,第六个星号代表年。

你可以使用星号 (*) 来表示任何值,也可以使用数字来指定特定的值。例如,*/10 表示每10秒执行一次任务,0 8 * * * 表示每天早上8点执行一次任务。

定时任务的其他功能

除了基本的定时任务功能外,egg 还提供了一些其他功能,可以让你更方便地管理你的定时任务。

  • 任务组: 你可以将多个定时任务分组,以便于管理。
  • 任务状态: 你可以随时获取定时任务的状态,例如:是否正在运行、是否已完成。
  • 任务日志: 你可以查看定时任务的日志,以便于排查问题。

结语

egg的定时任务功能非常强大,可以帮助你轻松实现各种自动化任务。本文只是简单介绍了egg定时任务的基本用法,更多高级用法请参阅egg官方文档。