我有一个任务,其中我必须进行700个restapi调用。我使用了一个循环,但是循环的运行时间超过了AWS Lambda服务的超时时间。有没有什么方法可以同时调用并合并结果。我使用的是node JS,但也欢迎使用python解决方案
下面是我正在运行的代码示例:
HitBTCData = {}
for item in exchanges:
itemlist = item.split('-')
response = requests.get('https://min-
api.cryptocompare.com/data/histominute?
fsym='+itemlist[0]+'&tsym='+itemlist[1]+'&limit=2000&aggregate=1
&e=HitBTC').json()
if itemlist[0]+itemlist[1] not in HitBTCData:
HitBTCData[itemlist[0]+itemlist[1]] = []
HitBTCData[itemlist[0]+itemlist[1]].append(response['Data'])
while response['Type'] != 1:
time = response['TimeFrom']
response = requests.get('https://min-
api.cryptocompare.com/data/histominute?
fsym='+itemlist[0]+'&tsym='+itemlist[1]+
'&limit=2000&aggregate=1&toTs='+str(time)+'&e=HitBTC').json()
if response['Type'] != 1:
HitBTCData[itemlist[0]+itemlist[1]]
.append(response['Data'])
HitBTCData[itemlist[0]+itemlist[1]] =
HitBTCData[itemlist[0]+itemlist[1]][::-1]
您可以很容易地使用
Promise.all()
实现这一点:唯一的缺点是,如果任何一个承诺被拒绝,一切都会失败。所以我建议捕捉错误并用
null
或类似的方法解决。你知道吗你可以做一个
for
循环来生成你的url数组,new Array(700).map(...)
,或者因为看起来你已经有了某种数组,只需.map()
直接在请求函数中进行更多的转换。你知道吗使用循环输入节点.js调用将同时运行,但要确保在退出lambda之前处理所有调用,需要某种形式的计数器来确保所有查询都已结束。你知道吗
示例:
您需要构建自己的callAPI函数。另外,我在这里对数组的内容有点懒散,但这只是给你一个框架。你知道吗
相关问题 更多 >
编程相关推荐