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


Answers:


113

更新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计划中才能正常工作,因此,我将下面的替代选项留作参考。

如果要在执行另一个触发器的时间上安排一次对Cloud Function的调用,可以使用Cloud Tasks进行设置。 阅读本文以获取有关如何工作的扩展示例。

下面的原始答案...


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

目前,最好的选择是使用外部服务来定期触发HTTP功能。有关更多信息,请参见功能样本回购中的此样本。或使用最近推出的Google Cloud Scheduler通过PubSub或HTTPS触发Cloud Functions:

在此处输入图片说明

我还强烈建议阅读Firebase博客上的这篇文章:如何使用Firebase的Cloud Functions计划(Cron)作业,以及此视频:使用HTTP Trigger和Cron为Firebase定时云功能

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


1
一切都没有改变。包括cron-job.orgJen在博客文章中谈论的事实是免费使用的。
弗兰克·范·普菲伦

2
来自Jen的视频已被标记为已弃用。那么还有另一种方法吗?
b-fg

2
这种方法今天与制作视频(和博客文章)时一样有效。语法略有变化,但是我认为这种特定情况不会受到影响。如果您在进行这项工作时遇到麻烦,请打开一个问题,指出您已经完成了什么。
弗兰克·范·普菲伦

1
哇,终于他们实现了一种简单的方法!终于!!!! 感谢您的更新
schankam

1
在Cloud Scheduler页面上:Each Cloud Scheduler job costs $0.10 (USD) per month,假设“工作”并不意味着每次计划的事情都触发,而是每个计时器的成本?即,每分钟运行一次的工作仅需花费$ 0.10?(不包括其调用的任何云功能)。
亚伦·阿什

12

您可以做的是启动由cron作业触发并发出到PubSub的AppEngine实例。我专门为此写了一篇博客文章,您可能想看看:

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


1
对于每小时触发一次的cron作业,每月估计费用是多少?
Ehtesham Hasan

3
@EhteshamHasan看起来可能是免费的:cloud.google.com/free。目前每天有28个实例小时免费;此外,还有带有Linux的Google Compute Engine的f1-micro实例(带有运行atm的Linux),用于免费atm。
bitsoflogic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.