Answers:
更新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,并适用于免费计划中的项目。请注意,这允许任何人未经授权调用您的函数,因此您可能希望在代码本身中包含一些滥用保护机制。
Each Cloud Scheduler job costs $0.10 (USD) per month
,假设“工作”并不意味着每次计划的事情都触发,而是每个计时器的成本?即,每分钟运行一次的工作仅需花费$ 0.10?(不包括其调用的任何云功能)。
您可以做的是启动由cron作业触发并发出到PubSub的AppEngine实例。我专门为此写了一篇博客文章,您可能想看看:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
cron-job.org
Jen在博客文章中谈论的事实是免费使用的。