【问题标题】:Node.js - How to throttle and limit logic but not limiting main endpoint?Node.js - 如何节流和限制逻辑但不限制主端点?
【发布时间】:2022-01-16 22:41:22
【问题描述】:

这个问题可能听起来有点奇怪,但我不确定如何处理这个具体问题。

我有一个请求而不是做一些事情并将响应发送回客户端。 在这个特定的请求中,我也在将响应发送回做一些后台工作后做一些事情。问题在于这部分逻辑/功能,因为它请求具有速率限制的第三方公共 API。假设我向此端点发送 20 个请求/秒。

10个请求将被第三方公共API处理并正确处理,但最后10个请求将不被处理并返回限速错误。

我的问题是 - 我怎样才能改变这个逻辑/端点来支持我的需求。非常感谢任何反馈和建议。

// endpoint /get-data/
await doAlotOfLogicHere();

setTimeout(() => {
      // Do something after 1 seconds
      // This specific action can only take 10 requests / second
      controller.doSomething(req,res)
    }, 1000);

// Send response to client
res.status(200).send(data);

controller.doSomething()

exports.doSomething = (req,res) => {
await sendDataToPublicAPI();
}

【问题讨论】:

  • 您的节点应用程序是分布式的还是在单个主机上运行?
  • 在单个主机上运行。

标签: node.js rest express


【解决方案1】:

你的问题有点模糊......不过,让我提出一些建议。

  1. 将用户请求推送到队列(这将是一个包含资源、有效负载和时间戳的数据库表)
  2. scheduleenter link description here 触发它
  3. 发出少量异步请求以检查响应是否可用
  4. 获取结果数据。最好能缓存到自己的数据库中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-27
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多