Articles of 调度任务

使用节点时间表(永久使用)执行计划任务后重新启动后保留

我想开发一个node.js程序,它将在一个特定的时间使用一个作业调度程序(node-schedule)来执行。 这个程序使用forever(node.js模块)在后台运行。 以下是我的app.js的内容: var schedule = require('node-schedule'); ~~ var id = request.body.id; var scheduled = schedule.scheduledJobs; if(scheduled[id]!=null){ //Tasks } else{ scheduled[id].cancel; delete scheduled[id]; } 但是,如果app.js被任何原因杀死,则schedule对象被删除。 有时app.js永远重启。 我如何处理节点时间表对象?

如何安排一个function,每天使用NodeJS和Generators运行?

我需要一个函数,每天在一个给定的时间与生成器 (yield)进行调用,做我的search我已经find了两个节点模块,使我能够做到这一点,一个是node-schedule ,另一个是node-cron Node-cron 似乎不支持生成器 节点时间表应该有支持,但它似乎不工作在这里指出: 问题#325 为了更清楚我想要完成什么,我附上了#325相同的代码: const date = momemt().add(1, 's'); // 1 second after now. schedule.scheduleJob('taksid', date, function*(){ console.log('Hi'); const result = yield Message.findAll(); console.log('Result: ' + result); }); 如问题所述,'嗨'被打印出来,'结果'不打印。 我无法find一个方法来安排一个函数与发电机,如果你们中有些人知道如何做到这一点将是伟大的! 先谢谢你们

如何在我的express.js网站(或任何其他特定时间)的每个星期一早上运行脚本?

我希望能够每周一早上运行一次“node sendSomeEmails.js”。 到目前为止,我发现最简单的方法就是在我的日程表中提醒一下,然后启动一个terminal并自行完成: 我正在使用Mandrill构build一个自动化的电子邮件系列。 用户将在我的网站上订阅(使用快递build立在node.js上),立即获得第一封电子邮件,然后在每个星期一早上,我想发送下一封电子邮件。 我会保持每个用户在我的数据库有多远,但我不知道触发星期一早上发送的最佳方式。 顺便说一下,我在IBM Bluemix上运行我的站点。 也许有一个简单的方法可以用AWS来做到这一点…虽然在AWS上我从来没有做过任何事情。

NodeJS定期任务

总之,我会解释我的问题: 我正在开发一个电子商务网站。 其中一个特点是客户可以创build采购规则 。 通过这些规则,客户可以设置开始date,周期和产品购买。 结果是产品将在[开始date]的每[周期]天内购买。 该系统以NodeJS作为后端,MongoDB作为数据库,AngularJS作为前端开发。 我发现了一些在NodeJS中调度任务的项目。 其中两个是: 节点时间表 节点的cron 他们两个都是很棒的工具,但是我和他们两个有同样的问题。 问题是我需要创build计划任务以及停止它们。 使用这些工具很清楚如何安排一段时间执行的function,但是我怎样才能随时阻止它们呢? node-schedule和node-cron提供的对象有一个cancel()或stop()方法来停止调度,但为了调用这个方法我需要有这个对象。 我的问题是,如果有一种方法可以将计划任务“存储”在数据库中,以便能够在任何时候,从创buildfunction以外的任何地方阻止它们。 如果这是不可能的,如果有另一种工具比我所提到的做得更好, 非常感谢您的阅读和任何帮助,将不胜感激。

Grunt:当函数不能被分割到不同的任务时,如何依次运行一个函数,然后是一个任务,然后是另一个函数?

我正在使用Grunt来生成一个构build。 我是Grunt,javascript和nodejs的新手,所以任何新的观点都会受到欢迎。 我的Gruntfile中的一些任务依赖于插件(比如用于javascript缩小的“uglify”),而另外一些工作stream程最适合于自己编写javascript函数。 (1)执行一个javascript函数(2)在该函数之后立即执行一个grunt任务(3)执行另一个javascript函数。 它需要按照这个顺序发生。 但是,由于Grunt只是一个任务调度程序,所以在(1)和(3)完成之后,它将作为最后一步运行(1),排队(2),运行(3),然后运行(2)。 以下是一个非常简单的假设自定义任务的用例,以更好地解释情况。 grunt.task.registerTask('minifyJS', function() { jsFilepathMapping = configureUglifiy(); /** note – configureUglify is needed because the minification filepaths are generated on the fly, I do not know them before the script runs and more than that, there are so many that it would be really bulky to create init targets […]

使用节点时间表安排作业

我正在使用名为node-schedule的节点模块 我有这个function,预计在每个季度开始时会一次点燃。 var rule = {hour: 0, minute: 0, day: 1, month: [0, 3, 6, 9]}; var logCost = schedule.scheduleJob(rule, function(){ console.log('logCost output this shit at: ' + dateFormat(Date(), 'isoTime')); }); 问题是这个函数只是在整个一天(那个月的第一天)继续执行。 我如何重写这只执行一次,可能是我的规则variables有什么问题,但我什么都看不到。

setTimeout函数和asynchronous函数

这是关于如何setTimeout执行其callback。 我有以下几点 function f1 (argument) { console.log('f1 start'); for(var i = 0; i < 100000; ++i) for(var j = 0; j < 10000; ++j); console.log('f1 complete'); } function f2 (argument) { console.log('f2 start'); for(var i = 0; i < 1000; ++i) for(var j = 0; j < 10000; ++j); console.log('f2 complete'); } function f3 (argument) […]

如何使用node-schedule只在一个实例上运行cron?

我的问题是如何使用节点调度来运行一个cron仅在节点服务器的两个实例中的一个实例。 目前它在两个实例上运行,但我希望它只能在一个实例上执行。 那么如何让一个集群只运行一次任务呢? 提前致谢。 { "apps": [ { "name": "Example", "script": "boot/app/app.js", "watch": false, "exec_mode": "cluster_mode", "instances": 2, "merge_logs": true, "cwd": "/srv/www.example.com/server", "env": { "NODE_ENV": "development", ……. ……. } } ] }

使用基于AMQP的服务器比使用beanstalkd或redis更有吸引力吗?

我正在编写一个项目,负责处理面向数据服务器的主应用程序之外的任务,这是使用Node.js用JavaScript编写的。 它需要处理将来计划的任务,并有可能处理“现在”的任务。 “现在”只是意味着下一次工作人员可以使用时,将会执行该任务,所以这一点可能无关紧要。 工作人员都要和外部资源交stream,一个例子就是发邮件。 我们是一个小商店,我们没有太多的资源,所以我不想做的一件事是在这个过程中开始混合语言,我已经看到Node可以很容易地为我们做这个,所以这就是我们要去的地方,除非在我开始编码之前看到一个令人信服的理由。 总之,我不能说是否有一个令人信服的理由来使用基于AMQP的服务器,比如像Openue或RabbitMQ这样的类似Kue或Beanstalkd的节点客户端。 那么,我们走吧: 使用基于AMQP的服务器比使用Kue的beanstalkd或redis更有吸引力吗? 如果是,那么基于AMPQ的服务器最适合我所布置的架构? 如果不是,哪个nosql解决scheme(beanstalkd,redis / Kue)最容易设置和部署速度最快?