gpt4 book ai didi

node.js - 限制对 NodeJS 中 API 的并发请求以及 Async/Await

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:05 24 4
gpt4 key购买 nike

我正在使用Request包在我的 Nodejs 项目中以及 Node V.8.x 中引入的 Async/Await 函数来使用第 3 方 API,一切都很好,直到我遇到 API 的限制提供者; who 的限制是每秒 10 个并发请求。

我尝试了许多可用的 NPM 软件包,例如速率限制器等,但是最近发现了 article与我的问题相关,它向我介绍了 qrate包。

我尝试使用以下代码解决此问题:可能我需要使用回调而不是“完成”并在“fetchAPIDetails”中处理它 - 非常感谢任何帮助。预先感谢您。

const async = require('async')
const request = require('request-promise')
const qrate = require('qrate')
const q = qrate(worker,1,5)

const worker = async (reqBody, options, done) => {
const options = { method: 'POST', url: apiURL, body: reqBody, timeout: 5000}
try{
const response = await request(options)
if(response.error){errorHandler(response.error); return {}}
else {
const body = response.body // Expecting XML
console.log(body.toString().slice(200,350))
return body
}
return done
}
catch(err){return errorHandler(err)} //errorHandler fn
}

const fetchAPIDetails = async () => {
const IdArr = [a,b,c] // An array of id, which need to pass in reqBody
try{
async.eachLimit(IdArr, 1, async id => {
const reqBody = await queryBuilder(id) // queryBuilder fn
q.push(reqBody)
})

} catch(err){return errorHandler(err)} //errorHandler fn
}

最佳答案

谢谢大家,谁会在这里解决我的问题。然而,通过我的进一步研究,我了解到,API请求的并发可以直接使用NPM-Request包来处理,如下article .

这是我的代码供引用,供任何想要实现相同目标的人使用:

const request = require('request-promise')
const Parallel = require('async-parallel')

const queryBuilder = async () => { ... } // Builds my Query body (reqBody)
const errorHandler = async (error) => { ... } // Handles Error
const requestHandler = async () => {
try{
const response = await request(options)
console.log(response.toString().slice(200,350))
return response
} catch(err){return errorHandler(err)} //errorHandler fn
}

const fetchAPIDetails = async () => {
const IdArr = [a,b,c] // An array of id, which need to pass in reqBody
Parallel.concurrency = 1
try{
Parallel.each(IdArr, async id => {
const reqBody = await queryBuilder(id) // queryBuilder fn

})
} catch(err){return errorHandler(err)} //errorHandler fn
}

关于node.js - 限制对 NodeJS 中 API 的并发请求以及 Async/Await,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47794063/

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