微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Node.js限制API请求并将队列限制为1

如何解决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 举报,一经查实,本站将立刻删除。