从Google Cloud Functions发送HTTP请求是否有请求数量限制?

时间:2019-06-11 02:43:00

标签: javascript google-cloud-functions

我正在使用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
        })
    })

}

1 个答案:

答案 0 :(得分:0)

由于我们无法为您基准化代码或观察其行为,因此,唯一的逻辑答案是,十个中的至少一个花费的时间比您配置的超时时间长,这会使整个承诺在发送时失败通过Promise.all()。尝试使用increasing the timeout来实现该功能。