Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase的云功能是否按时触发?_Javascript_Firebase_Google Cloud Platform_Google Cloud Functions - Fatal编程技术网

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

Javascript Firebase的云功能是否按时触发?,javascript,firebase,google-cloud-platform,google-cloud-functions,Javascript,Firebase,Google Cloud Platform,Google Cloud Functions,我正在寻找为Firebase安排云功能的方法,或者换句话说,在特定时间触发它们。更新2019-04-18 现在有一种非常简单的方法可以通过Firebase在云函数上部署计划代码 您可以使用简单的文本语法: export scheduledFunctionPlainEnglish = functions.pubsub.schedule('every 5 minutes').onRun((context) => { console.log('This will be run every

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

更新2019-04-18

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

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

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触发云功能:

我还强烈建议您阅读Firebase博客上的这篇文章:以及这段视频:


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

更新2019-04-18

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

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

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触发云功能:

我还强烈建议您阅读Firebase博客上的这篇文章:以及这段视频:


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

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


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


首先需要注意的是,您的函数将执行的默认时区是美国/洛杉矶。如果你想在不同的时区触发你的函数,你可以找到一个时区列表

NB:这里有一个有用的网站可以帮助您(我发现它非常有用)

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

否则,如果您希望坚持默认设置:

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

首先需要注意的是,您的函数将执行的默认时区是美国/洛杉矶。如果你想在不同的时区触发你的函数,你可以找到一个时区列表

NB:这里有一个有用的网站可以帮助您(我发现它非常有用)

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

否则,如果您希望坚持默认设置:

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

对于每小时触发一次的cron作业,每月的估计成本是多少?@EhteshamHasan看起来可能是免费的:。目前每天免费提供28个实例小时;此外,还有Google Compute Engine的f1 micro实例w/Linux运行crons for free atm。对于每小时触发一次的cron作业,每月的估计成本是多少?@EhteshamHasan看起来可能是免费的:。目前每天免费提供28个实例小时;此外,谷歌计算引擎的f1微实例w/Linux运行免费atm的cron。这一点没有改变。包括Jen在博客文章中提到的
cron job.org
是免费使用的。Jen的视频被标记为不推荐使用。那么还有其他方法吗?这种方法在今天和视频(和博客文章)制作时一样有效。语法略有改变,但我不认为这个具体案例会受到影响。如果你在这项工作中遇到困难,可以提出一个问题,说明你已经做了什么。哇,他们终于实现了一种简单的方法!最后感谢云调度器页面的更新:
每个云调度器作业每月的成本为$0.10(USD)
,假设“作业”并不意味着每次调度事件启动,而是每个计时器的成本?i、 每分钟运行一次的作业只需花费0.10美元?(不包括它调用的任何云函数)。这方面没有任何变化。包括Jen在博客文章中提到的
cron job.org
是免费使用的。Jen的视频被标记为不推荐使用。那么,有没有其他的方法来解决这个问题呢