Firebase的Cloud功能是否按时触发?

时间:2017-03-14 15:56:13

标签: firebase google-cloud-functions firebase-cloud-functions

我正在寻找一种方法来为Firebase安排云功能,换句话说就是在特定时间触发它们。

3 个答案:

答案 0 :(得分:80)

更新 2019-04-18

现在有一种非常简单的方法可以通过Firebase在云功能上部署预定代码。

您可以使用简单的文本语法:

WebElement element =driver.findElement(by);
        JavascriptExecutor jse =(JavascriptExecutor)driver;
        jse.executeScript("arguments[0].scrollIntoView(true);",element);

或更灵活的cron表格式:

export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
    console.log('This will be run every 5 minutes!');
})

要了解有关此内容的更多信息,请参阅:

请注意,您的项目需要采用Blaze计划才能实现,因此我将在下面留下替代选项以供参考。

以下原始答案......

还没有内置的runat / cron类型触发器。

目前,最好的选择是使用外部服务定期触发HTTP功能。有关详细信息,请参阅functions-samples repo中的此示例。或者使用最近推出的Google Cloud Scheduler通过PubSub或HTTPS触发云功能:

enter image description here

我还强烈建议您在Firebase博客上阅读此帖子:How to Schedule (Cron) Jobs with Cloud Functions for Firebase和此视频:Timing Cloud Functions for Firebase using an HTTP Trigger and Cron

答案 1 :(得分:10)

你可以做的是,启动一个由cron作业触发并发送到PubSub的AppEngine实例。我专门写了一篇博文,你可能想看看:

https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html

答案 2 :(得分:0)

请务必首先注意,根据 documentation,您的函数将在其上执行的默认时区是 America/Los_Angeles。如果您想在不同的时区触发您的函数,您可以找到时区列表 here

注意!!:这是一个有用的网站来帮助cron table formats(我发现它非常有用)

以下是您的处理方式: (假设您想使用非洲/约翰内斯堡作为您的时区)

export const executeFunction = functions.pubsub.schedule("10 23 * * *")
    .timeZone('Africa/Johannesburg').onRun(() => { 
       console.log("successfully executed at 23:10 Johannesburg Time!!");
    });

否则,如果您宁愿坚持默认值:

export const executeFunction = functions.pubsub.schedule("10 23 * * *")
    .onRun(() => { 
       console.log("successfully executed at 23:10 Los Angeles Time!!");
    });