Node.js-使用每秒5个请求的API限制

城野

我有一个“脚本”,可以对特定的API进行数千个请求。该API每秒仅允许5个请求(可能与我的测量方式不同)。为了发出我正在使用request-promise框架的请求,我已经用以下方法取代了正常request-promise功能:

const request_promise  = require('request-promise')

function waitRetryPromise() {
  var count = 0 // keeps count of requests
  function rp(options) {
    const timedCall = (resolve) => setTimeout( ()=>resolve(rp(options)),1000) // recursive call
    count += 1
    if (count % 3 == 0) { // recalls after a second on every third request
      return new Promise(timedCall)
    } else {
      return request_promise(options)
    }
  }
  return rp
}

const rp = waitRetryPromise()

一旦短时间内连续发出约300个请求(发出或接收),这些请求就会开始相互干扰。有谁有更好的解决方案?我认为对该函数的递归调用会有所帮助,虽然可以,但是并不能解决问题。也许有一种将请求排队的模式,并且一次只处理几个吗?图书馆?

谢谢!

Jaromanda X

确定,而不是重复调用rp等,只需确保在两次请求之间延迟适当的时间...每秒5次,即200毫秒

function waitRetryPromise() {
    let promise = Promise.resolve();
    return function rp(options) {
        return promise = promise
        .then(() => new Promise(resolve => setTimeout(resolve, 200)))
        .then(() => request_promise(options));
    }
}
const rp = waitRetryPromise();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章