首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >每五分钟安排一次Node.js作业

每五分钟安排一次Node.js作业
EN

Stack Overflow用户
提问于 2011-11-04 23:46:01
回答 4查看 51.8K关注 0票数 32

我是node.js的新手。我需要node.js每五分钟查询一次mongodb,获取特定的数据,然后使用socket.io,允许订阅的web客户端访问这些数据。我已经设置了socket.io部分,当然,我只需要知道如何让node.js每五分钟运行一次,然后发布到socket.io。

对此最好的解决方案是什么?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-05 00:23:08

代码语言:javascript
复制
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并运行:)

票数 87
EN

Stack Overflow用户

发布于 2019-07-05 10:57:12

您可以使用this package

代码语言:javascript
复制
var cron = require('node-cron');

cron.schedule('*/5 * * * *', () => {
  console.log('running a task 5 minutes');
});
票数 10
EN

Stack Overflow用户

发布于 2015-12-19 18:07:56

如果你有一些异步任务要管理,你应该这样做:

代码语言:javascript
复制
(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来调度异步作业,但是如果您这样做了,那么您至少应该将已处理的任务标记为“正在处理”,以便如果要在前一次完成之前再次调度该作业,您的逻辑可能会决定不处理仍在处理的任务。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8011962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档