MEANIO群集(共4个)对于计划作业仅运行一次
MEANIO Cluster of 4 to run only once for a scheduled Job?
我希望看到的是让MEAN旋转所有四个集群。然后每天20:30运行一个预定的作业给我的客户发电子邮件。目前运行不止一次。我该如何做到这一点?
'use strict';
var mean = require('meanio');
var cluster = require('cluster');
var schedule = require('node-schedule');
var z = schedule.scheduleJob('30 20 * * *', function() {
console.log('test the scheduler')
});
if (cluster.isMaster) {
// Count the machine's CPUs
var cpuCount = require('os').cpus().length;
// Create a worker for each CPU
for (var i = 0; i < cpuCount; i += 1) {
console.log ('forking ',i);
cluster.fork();
}
// Listen for dying workers
cluster.on('exit', function (worker) {
// Replace the dead worker, we're not sentimental
console.log('Worker ' + worker.id + ' died :(');
cluster.fork();
});
} else {
var workerId = 0;
if (!cluster.isMaster)
{
workerId = cluster.worker.id;
}
mean.serve({ workerid: workerId /* more options placeholder*/ }, function (app, config) {
var port = config.https && config.https.port ? config.https.port : config.http.port;
console.log('Mean app started on port ' + port + ' (' + process.env.NODE_ENV + ') cluster.worker.id:', workerId);
});
}
输出
forking 0
forking 1
forking 2
forking 3
Mean app started on port 3000 (development) cluster.worker.id: 1
Mean app started on port 3000 (development) cluster.worker.id: 2
Mean app started on port 3000 (development) cluster.worker.id: 3
Mean app started on port 3000 (development) cluster.worker.id: 4
test the scheduler
test the scheduler
test the scheduler
test the scheduler
test the scheduler
为了澄清,您是否在问为什么调度程序运行不止一次?如果是这样的话,那是因为cluster.fork()
的工作方式与unix fork完全一样,它创建了另一个进程,该进程本质上是当前进程的副本。每个进程将在自己的参考框架中安排一个作业,每个进程都将执行该作业。您可能希望通过在if(cluster.isMaster) {
内部移动调度来确保仅在主进程中调度作业。
通过这样做,您可以指示主将作业分派给工人。不过,您必须自己添加负载平衡。
您可能会考虑使用作业队列来完成此操作,而不是直接邮寄放置在队列中以及从那里开始的过程。在添加到队列之前,请查看现有任务是否已经存在,从而避免多个实例。我使用过Kue,听说过关于busmq 的好消息
相关文章:
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 使用压缩的JavaScript文件(不是运行时压缩)
- Javascript运行php文件,然后下载文件
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- MobileFirst:在客户端运行计时器作业-最佳选项
- MEANIO群集(共4个)对于计划作业仅运行一次
- 在nodeJS中每小时运行一次调度作业
- 分析作业未按计划计时间隔运行
- 尝试运行作业时分析错误代码 1 内部错误
- 使用节点 JS 运行连续后台作业
- 每小时自动运行一次PHP页面 - 无需使用Cron作业
- 如何使用Rest API在需要身份验证的jenkins上运行作业
- 如何通过OAuth登录以便运行cron作业
- 在gump作业中运行异步操作
- 如何在批量用户中运行解析云作业以避免时间限制
- 使用开源作业调度器运行php文件
- 作业队列和JavaScript运行时
- 在没有cron作业的情况下连续运行php函数
- 使用Node.io运行作业时出现问题