保持firebase功能运行

时间:2018-03-23 13:39:38

标签: node.js firebase google-cloud-functions

我创建了一个firebase功能,通过他们的API从两个网站获取数据。

我希望触发一次该功能/脚本,然后定期请求这两个网站。

我写的代码:

setInterval(() => {

    rootRef.on('value', (snap) => {
        airtableApiKey = snap.val().airtable_key;
        airtableBase = snap.val().airtable_base;
        orionxApiKey = snap.val().orionx_key;
        orionxApiSecret = snap.val().orionx_secret;
        functionTimer = snap.val().function_timer;
        functionStatus = snap.val().function_status;
        geminiCoin = snap.val().gemini_coin;
        orionxCoin = snap.val().orionx_coin;


        if (!isNaN(Number(functionTimer)) && Number(functionTimer) !== 0 && functionStatus.toString().toLowerCase() === 'on') {
            trigger(airtableApiKey, airtableBase, orionxApiKey, orionxApiSecret, functionTimer, functionStatus, geminiCoin, orionxCoin).catch(err => console.log(err));
        }
    });
}, Number(functionTimer) * 1000);

exports.helloWorld = functions.https.onRequest((req, res) => {
});

在这种情况下,setInterval中的代码执行大约一分钟然后自动停止。

我尝试在快速路由中移动setInterval代码,给出相同的结果。

像这样:

   exports.helloWorld = functions.https.onRequest((req, res) => {
 setInterval(() => {

        rootRef.on('value', (snap) => {
            airtableApiKey = snap.val().airtable_key;
            airtableBase = snap.val().airtable_base;
            orionxApiKey = snap.val().orionx_key;
            orionxApiSecret = snap.val().orionx_secret;
            functionTimer = snap.val().function_timer;
            functionStatus = snap.val().function_status;
            geminiCoin = snap.val().gemini_coin;
            orionxCoin = snap.val().orionx_coin;


            if (!isNaN(Number(functionTimer)) && Number(functionTimer) !== 0 && functionStatus.toString().toLowerCase() === 'on') {
                trigger(airtableApiKey, airtableBase, orionxApiKey, orionxApiSecret, functionTimer, functionStatus, geminiCoin, orionxCoin).catch(err => console.log(err));
            }
        });
    }, Number(functionTimer) * 1000);
    });

1 个答案:

答案 0 :(得分:1)

您无法在云功能中无限期地运行功能。它不受支持。所有功能最终都会超时。默认值为60秒,云控制台中的配置最大值为9米。

如果您想安排在云功能中完成一些工作,则需要提供自己的调度程序。该团队正在研究如何安排活动,但该解决方案没有时间表。

云功能旨在尽快完成工作。它们不适用于无限长的任务。如果您需要无限期地运行某些代码,请使用App Engine或您控制的其他容器。