我正在使用Firebase云功能。 我的功能每5分钟触发一次。 当我的函数被触发时,我的函数将HTTP请求发送到外部网站。 如果网站数量少于10,则一切正常。 但是,当网站数大于10时,会发生超时错误。 你能解释为什么吗?有什么办法吗?参见下面的代码。
const functions = require('firebase-functions');
admin.initializeApp();
const rp = require('request-promise');
exports.scheduledFunction = functions.pubsub.schedule('*/5 * * * *')
.timeZone("Asia/Tokyo").onRun((context) => {
// URLs
const urlArray = ['http://a.com', /* ..... */, 'http://z.com']; // total 25 urls.
function getDataFromUrl(){
const promises = []
var N = 10 // if N<=10 working well, but if N>10 not working
for(var i=0; i<N; i++){
promises.push(rp.get(urlArray[i]))
}
return Promise.all(promises)
}
return getDataFromUrl().then(results =>{
results.forEach(result=>{
// do something
})
})
}
答案 0 :(得分:0)
由于我们无法为您基准化代码或观察其行为,因此,唯一的逻辑答案是,十个中的至少一个花费的时间比您配置的超时时间长,这会使整个承诺在发送时失败通过Promise.all()
。尝试使用increasing the timeout来实现该功能。