基础知识:
我需要触发一个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 Nodejs方法放置在什么地方,该方法只能由主进程处理。
似乎没有太多关于此特定主题的指南或教程。任何帮助表示赞赏。
答案 0 :(得分:1)
是的,您基本上是正确的-假设您在上面定义了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