gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 23:03:25 26 4
gpt4 key购买 nike

我有一个“脚本”可以对特定 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 个请求(给予或接受),这些请求就会开始相互干扰。有没有人有更好的解决方案?我认为对同一个函数的递归调用会有所帮助,它确实有帮助,但并没有解决问题。也许有一种模式可以对请求进行排队,一次处理几个请求?也许是图书馆?

谢谢!

最佳答案

好的,而不是递归调用 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();

关于javascript - Node.js - 使用每秒 5 个请求的 API 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46701209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com