是否有node.js的作业调度程序库?

时间:2010-09-24 09:25:27

标签: scheduling node.js

是否有一些类似cron的库可以让我安排某些功能在某个时间运行(例如15:30,而不是x小时从现在开始等)?如果没有这种库应该如何实现?我应该只设置每秒调用一次回调并检查时间并开始计划当时的工作或什么?

11 个答案:

答案 0 :(得分:119)

node-cron就是我所说的

答案 1 :(得分:42)

node-schedule Node的类似cron和非cron的作业调度程序。

答案 2 :(得分:30)

agenda是节点的轻量级作业调度。这对你有帮助。

答案 3 :(得分:14)

later.js是一个非常好的JavaScript“调度程序”库。可以在Node.js或Web浏览器中运行。

答案 4 :(得分:11)

我正在使用kue:https://github.com/learnboost/kue。这很不错。

官方功能和我的评论:

  1. 延迟工作。
    • 如果要让作业在特定时间运行,请计算该时间与现在之间的毫秒数。调用job.delay(毫秒)(文档说分钟,这是错误的。)不要忘记添加“jobs.promote();”当你开始工作时。
  2. 工作事件和进展pubsub。
    • 我不明白。
  3. 丰富的集成UI。
    • 非常有用。您可以在集成UI中检查作业状态(完成,运行,延迟),而无需编写任何代码。您可以在UI中删除旧记录。
  4. 无限滚动
    • 有时候不工作。必须刷新。
  5. UI进度指示
    • 适合耗时的工作。
  6. 特定于作业的日志记录
    • 因为它们是延迟的作业,您应该在作业中记录有用的信息,然后通过UI进行检查。
  7. 由Redis提供支持
    • 非常有用。当您重新启动node.js应用程序时,所有作业记录仍然存在,并且计划的作业也将执行!
  8. 可选重试
    • 尼斯。
  9. 全文搜索功能
    • 好。
  10. RESTful JSON API
    • 声音很好,但我从不使用它。

  11. 编辑:

    1. kue不是像库那样的cron。
    2. 默认情况下,kue不支持重复运行的作业(例如每个星期日)。

答案 5 :(得分:9)

node-crontab允许您从node.js编辑系统cron作业。使用此库将允许您在主进程终止后运行程序。免责声明:我是开发人员。

答案 6 :(得分:7)

您可以使用 timexe

它的好处是它易于使用,重量轻,没有依赖性,在cron上有改进的语法,以毫秒为单位的分辨率,并在浏览器中工作。

安装:

npm install timexe

使用:

var timexe = require('timexe');
var res = timexe("* * * 15 30", function(){ console.log("It's now 3:30 pm"); });

(我是作者)

答案 7 :(得分:2)

我是node-runnr的au。它有一个非常简单的方法来创造工作。它也非常容易和明确地宣布时间和间隔。 例如,每隔10分钟执行一次作业20秒,

Runnr.addIntervalJob('10:20', function(){...}, 'myjob')

每天上午10点和下午3点做一份工作,

Runnr.addDailyJob(['10:0:0', '15:0:0'], function(){...}, 'myjob')

就这么简单。 有关详细信息:https://github.com/Saquib764/node-runnr

答案 8 :(得分:1)

我们可以使用node-schedulenode-cron来实现基于cron的调度程序。

注意:为了生成cron表达式,您可以使用此cron_maker

答案 9 :(得分:0)

这不适合所有人,但如果你的应用程序已经设置为通过套接字接收命令,你可以使用netcat通过cron发出命令。

echo 'mycommand' | nc -U /tmp/myapp.sock

答案 10 :(得分:0)

所有这些答案都没有指向最受欢迎的NPM包.cron

https://www.npmjs.com/package/cron