node服务的调度任务
# 实现思路
引入
node-cron
包,这个包用来生成调度任务写一个定时执行的调度任务,需要注意的是要将这个任务的时区设置为中国时间,不然执行的时间不对
// 重启 mysql 服务的方法
function taskFunction() {
const execStr = 'sudo systemctl restart mysqld.service';
exec(execStr, (error, stdout, stderr) => {
if (error) {
console.error(`命令执行错误: ${error.message}`);
return;
}
if (stderr) {
console.error(`命令执行错误: ${stderr}`);
return;
}
console.log(`命令执行成功: ${stdout}`);
});
}
// 设置每天的 09:27 定时执行 重启 mysql 服务
export const scheduleTasks = () => {
const time = '09:27';
const [hour, minute] = time.split(':');
const cronExpression = `${minute} ${hour} * * *`;
cron.schedule(cronExpression, taskFunction, {
scheduled: true,
timezone: 'Asia/Shanghai',
});
};
- 在服务的主文件里面导入这个方法,并且执行即可
/**
* @des 连接数据库
*/
import { scheduleTasks } from './scheduledTasks.mjs'; // 导入定时任务
/**
* 其他服务的代码省略
* ...
*/
// 执行定时任务
scheduleTasks();
/** ----------------------------------------------------开启服务监听---------------------------------------- */
app.listen(6005, () => {
console.log('\x1b[35m%s\x1b[0m', 'mysql server working...');
});
export default app;