如何解决Node.js限制API请求并将队列限制为1
所需功能
我有一个节点服务器,当客户端请求重新加载数据时,该服务器从第三方API请求数据。我想限制我的节点服务器每5分钟最多请求一次重新加载数据的次数,无论哪个用户请求重新加载数据。
问题
此刻我正在使用节流队列,但是我想将队列限制为1。如果在队列已经为1的情况下提出了任何其他请求,那么我希望该请求被忽略。
>const throttledQueue = require("throttled-queue");
const throttle = throttledQueue(1,1500);
router.get("/throttle",async (req,res,next) => {
try {
throttle(async function () {
const response = await http.get();
console.log("response in throttle test route",response.data);
res.status(200).send({ response: response.data });
});
} catch (error) {
console.log("error",error);
}
});
如何实现?此外,即使其他用户发出请求,节流队列仍然每5分钟仅调用一次我的外部API调用吗?
解决方法
我认为节气门是您在此处使用的错误概念。确实,您想使用5分钟过期时间的缓存。您可以为此或各种缓存库中的任何一个使用节点缓存。如果发生高速缓存未命中,您将调用加载数据并重新填充高速缓存。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。