我是node.js的新手。我需要node.js每五分钟查询一次mongodb,获取特定的数据,然后使用socket.io,允许订阅的web客户端访问这些数据。我已经设置了socket.io部分,当然,我只需要知道如何让node.js每五分钟运行一次,然后发布到socket.io。
对此最好的解决方案是什么?
谢谢
发布于 2011-11-05 00:23:08
var minutes = 5, the_interval = minutes * 60 * 1000;
setInterval(function() {
console.log("I am doing my 5 minutes check");
// do your stuff here
}, the_interval);
将该代码另存为node_regular_job.js并运行:)
发布于 2019-07-05 10:57:12
您可以使用this package
var cron = require('node-cron');
cron.schedule('*/5 * * * *', () => {
console.log('running a task 5 minutes');
});
发布于 2015-12-19 18:07:56
如果你有一些异步任务要管理,你应该这样做:
(function schedule() {
background.asyncStuff().then(function() {
console.log('Process finished, waiting 5 minutes');
setTimeout(function() {
console.log('Going to restart');
schedule();
}, 1000 * 60 * 5);
}).catch(err => console.error('error in scheduler', err));
})();
您不能保证它何时启动,但如果您的作业执行时间超过5分钟,则至少您不会同时运行多次作业。
您仍然可以使用setInterval
来调度异步作业,但是如果您这样做了,那么您至少应该将已处理的任务标记为“正在处理”,以便如果要在前一次完成之前再次调度该作业,您的逻辑可能会决定不处理仍在处理的任务。
https://stackoverflow.com/questions/8011962
复制相似问题