Das Problem, das mir gegenübersteht, ist, dass das Projekt bereits mit cluster
programmiert wurde, um die Aufgabe zu verteilen.Nodejs-Cluster Aufgabe nur einem Arbeiter zuweisen (Beliebig)
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
});
} else {
var server = http.createServer(app);
var usernames = {};
var showusernames = {};
var usersmessages = [];
require('../server/controllers/communication/chat.js').chatConfig(io, usernames);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
}
Ich habe eine Grundidee, dass dieser Code Aufgabe unter cpu für die Verteilung und Server im Falle einer CPU nicht leben zu halten.
Die Frage ist: Alles funktionierte gut, bis ich begann müssen mit Knoten arbeiten, um die cron
Job zu planen (die E-Mail sein wird). Der Cron wird jetzt von allen Mitarbeitern gleichzeitig ausgeführt und die E-Mail wird an den Worker gesendet, je nachdem wie viele CPUs auf dem Server vorhanden sind. Die I Arbeiter durch Terminierung von Job meiner Art und Weise, wie:
if(cluster.isWorker)
if(cluster.worker.id == 1){
cron.schedule('*/1 * * * *', function() {
//CRON JOB
})
}
Das funktionierte sehr fein im lokalen System aber nicht wegen des zu diesem Projekt ausgerichtet Server vielleicht CPU in Staging.
Gibt es eine Möglichkeit nur den ersten freien Arbeiter zu bekommen und Aufgabe, ihn zu zuweisen. Jetzt
Ich habe versucht, diese
var wokerArr = []
wokerArr.push(cluster.worker.id)
if(cluster.worker.id == wokerArr[0])
cron.schedule('*/1 * * * *', function() {
//CRON JOB
})
danke für die Antwort. Ich habe tatsächlich etwas Besseres herausgefunden. Um den Cron-Job getrennt mit 'Crontab' zu machen. Aber deine Antwort ist richtig. :) – Sandeep