我想在nodejs app中的特定时间执行任务,
所以我使用计时器编写了如下所示的源代码。
var _to_execute_time = 1571221163000; //The timestamp to execute the task.
var _current_timestamp = Date.now(); //The current timestamp.
//Scheduling the task using setTimeout();
setTimeout(task_function, _to_execute_time - _current_timestamp);
问题是,如果系统在执行任务之前重新启动,则 setTimeout(( 会被取消。
如何解决此问题并可靠地运行任务?
您可以使用node-cron
.crone 将在指定时间运行。
您可以使用的 npm 包是node-cron
。
var cron = require('node-cron');
cron.schedule('* * * * *', () => {
console.log('running a task every minute');
});
或
cron.schedule('0 11 * * *', () => {
console.log('running a task at 11:00 AM');
});
用于设置时间的允许字段:
# ┌────────────── second (optional)
# │ ┌──────────── minute
# │ │ ┌────────── hour
# │ │ │ ┌──────── day of month
# │ │ │ │ ┌────── month
# │ │ │ │ │ ┌──── day of week
# │ │ │ │ │ │
# │ │ │ │ │ │
# * * * * * *
我建议使用node-schedule来完成任务, 它接受 cron 格式。您可以在特定时间安排任务或重复
任务var j = schedule.scheduleJob('0 1 * * *', function(fireDate({ console.log('此作业本应在 ' + fireDate + ' 运行,但实际上在 ' + new Date((( 运行(; });
https://www.npmjs.com/package/node-schedule