首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我需要一个Nodejs调度器,允许在不同的时间间隔执行任务

我需要一个Nodejs调度器,允许在不同的时间间隔执行任务
EN

Stack Overflow用户
提问于 2013-12-11 00:02:02
回答 6查看 158.1K关注 0票数 137

我正在寻找一个节点作业调度,它将允许我在不同的时间间隔调度多个任务。例如,

  • 调用函数A每30秒
  • 调用函数B每60秒
  • 调用函数C每7天

我还希望能够启动和停止该进程。

到目前为止,我已经了解了:

  • later -语法把我搞糊涂了,显然你不能调度month
  • agenda-之外的任务似乎是最有希望的,但是我对数据库functionality
  • timeplan感到困惑-太简单了,不能启动和停止

我发现后者的语法令人困惑。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-12-11 00:13:55

我推荐node-cron。它允许使用Cron模式运行任务,例如

代码语言:javascript
复制
'* * * * * *' - runs every second
'*/5 * * * * *' - runs every 5 seconds
'10,20,30 * * * * *' - run at 10th, 20th and 30th second of every minute
'0 * * * * *' - runs every minute
'0 0 * * * *' - runs every hour (at 0 minutes and 0 seconds)

但也有更复杂的时间表,例如

代码语言:javascript
复制
'00 30 11 * * 1-5' - Runs every weekday (Monday through Friday) at 11:30:00 AM. It does not run on Saturday or Sunday.

示例代码:每10分钟运行一次作业:

代码语言:javascript
复制
var cron = require('cron');
var cronJob = cron.job("0 */10 * * * *", function(){
    // perform operation e.g. GET request http.get() etc.
    console.info('cron job completed');
}); 
cronJob.start();

您可以在node-cron wiki中找到更多示例

有关cron配置的更多信息,请访问cron wiki

我已经在很多项目中使用过这个库,它也能做到这一点。我希望这会有所帮助。

票数 235
EN

Stack Overflow用户

发布于 2013-12-11 00:23:13

我用过node-cronagenda

crontab crontab是一个非常简单的库,它提供了像这样非常基本且易于理解的。它不需要任何配置,就能正常工作。

代码语言:javascript
复制
var cronJob = require('cron').CronJob;
var myJob = new cronJob('00 30 11 * * 1-5', function(){...});
myJob.start();

agenda非常强大,适合更复杂的服务。以ifttt为例,你必须运行数百万个任务。agenda将是最佳选择。

注意:您需要使用Mongodb才能使用Agenda

代码语言:javascript
复制
var Agenda = require("Agenda");
var agenda = new Agenda({db: { address: 'localhost:27017/agenda-example'}});
agenda.every('*/3 * * * *', 'delete old users');
agenda.start();
票数 37
EN

Stack Overflow用户

发布于 2015-05-16 13:38:32

我认为最好的排名是

1.node-调度

2.later

3.crontab

node-schedule示例如下:

代码语言:javascript
复制
var schedule = require("node-schedule");
var rule = new schedule.RecurrenceRule();
//rule.minute = 40;
rule.second = 10;
var jj = schedule.scheduleJob(rule, function(){
    console.log("execute jj");
});

也许你可以从node modules那里找到答案。

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

https://stackoverflow.com/questions/20499225

复制
相关文章

相似问题

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