基础:
我需要触发一个Interval函数,该函数每小时仅调用一次第三方api端点。我不希望看到我的工作人员看到此函数,因为每个工作人员每小时都会调用此函数。
我在很多示例中都看到了这一点:
//Example Clustering
if (cluster.isMaster) {
//Do I insert my function here?
for (var i = 0; i < numCPUs; i++) {
// Create a worker
cluster.fork();
}
}
else {
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(8080);
}
我不知道将Timed Node.js方法放在哪里,该方法只能由主进程处理。
似乎没有太多关于这个特定主题的指南或教程。任何帮助,不胜感激。
最佳答案
是的,您基本上是正确的-假设您在上面定义了makeHttpRequest
,则代码可能如下所示:
if (cluster.isMaster) {
setInterval(
() => makeHttpRequest(),
1000 * 60 * 60
)
for (var i = 0; i < numCPUs; i++) {
// Create a worker
cluster.fork();
}
} else {
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(8080);
}
请记住,
setInterval
在短期或长时间内都不可靠,并且有更好的工具可以使用。如果需要较长的时间间隔(例如1小时),则可以使用https://github.com/kelektiv/node-cron关于javascript - 仅在集群NodeJS应用程序中的主进程上执行代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50933525/