如何解决Cloud Run 出站 API 调用受到限制?
我有一个实例,在某些请求中需要多次调用外部 API,有时调用多达 2,000 多次。
在本地运行我的应用程序时,对外部 api 的每次调用每次都会在低于 200 毫秒的时间内返回,而且所有 2,000 次调用的整个过程大约需要 15 秒。
我注意到在云运行上运行,我的 API 调用分为三类: appx 1/4 需要大约 200 毫秒,与本地相同。大约 1/2 需要 12007 毫秒,有些需要 63000 毫秒,对于这些相同的 API 调用,整个过程需要 20 多分钟。
我尝试过批处理,使用 async/eachLimit 设置为 10、20、50.. 但同样的事情发生了。
我本地的端点、数据和调用与云运行的相同。 Cloud run 也通过具有静态 IP 的 NAT 运行(可能会拦截/限制?)。
有没有人遇到过这种情况?将我的 docker 映像添加到同一 VPC/NAT 网关中的 VM 与我的本地效果相同(所有调用
有没有人在跑步中遇到过这种情况以及如何解决?
正在运行的代码段(请注意,我已经尝试过限制(以下代码段中为 50):
const productsWithAvailabilities = await mapLimit(products,50,async product => {
console.time(product.ProductID)
const availabilityOther = await productClient.execute(
'GetAvailabilityA',{
productid: product.ProductID,viewid: 'WEB',connectid: this.pricingToken,},false,)
let AvailabilityOther
try {
AvailabilityOther = availabilityOther?.GetAvailabilityAResult?.diffgram?.Warehouses?.ProductAvailability?.map(
a => ({
...a,QtyAvail: parseFloat(a.QtyAvail),QtyOnHand: parseFloat(a.QtyOnHand),QtyOnOrder: parseFloat(a.QtyOnOrder),QtyInTransit: parseFloat(a.QtyInTransit),Available: parseFloat(a.QtyAvail),}),)
} catch (e) {
console.log({ product,e })
}
console.timeEnd(product.ProductID)
return {
...product,AvailabilityOther,Availability: AvailabilityOther?.find(a => a.LocationID === LOCATIONS.MEL),QtyAvailableOther: AvailabilityOther?.filter(a => a.LocationID !== LOCATIONS.MEL)
.map(a => a.QtyAvail)
.reduce((result,current) => result + current,0),}
})
console.timeEnd('availabilities')
return productsWithAvailabilities as MoProProduct[]
}
ProductClient.execute 正在使用节点“soap”库发出 SOAP 发布请求。
VPC 连接器吞吐量为 200 - 1000(默认设置),我有一个连接到 NAT 的外部 IP/路由器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。