nodejs 应用程序如何在特定时间可靠地执行任务?



我想在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

最新更新