Firebase 的云功能按时触发?

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


答案 1

更新 2019-04-18

现在有一种非常简单的方法可以通过Firebase在Cloud Functions上部署计划代码。

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

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

或者更灵活的 cron 表格式:

export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
    console.log('This will be run every day at 11:05 AM UTC!');
});

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

请注意,您的项目需要采用Blaze计划才能使其工作,因此我将下面的替代选项留待参考。

如果要从另一个触发器的执行中安排对云函数的单个调用,则可以使用云任务进行设置。阅读本文,了解其工作原理的扩展示例。

下面的原始答案...


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

目前,最好的选择是使用外部服务定期触发HTTP函数。有关详细信息,请参阅函数示例存储库中的此示例。或者使用最近推出的Google Cloud Scheduler通过PubSub或HTTPS触发Cloud Functions:

enter image description here

我还强烈建议阅读Firebase博客上的这篇文章:如何使用Firebase的云功能安排(Cron)作业,以及此视频:使用HTTP触发器和Cron为Firebase定时云函数

最后一个链接使用 cron-job.org 来触发云功能,并适用于免费计划中的项目。请注意,这允许任何人在未经授权的情况下调用您的函数,因此您可能希望在代码本身中包含一些滥用保护机制。


答案 2

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

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