延迟Google Cloud Function

3
我有一个与Google Firebase配对的Swift iPhone应用程序。在应用程序中,用户将完成一个操作(按下按钮)。此时,我想安排一个Google Firebase函数在用户操作后45分钟运行。但是,我希望当iPhone应用程序中完成另一个操作(按下按钮)时,可以取消此函数。我可以使用计时器在Swift中完成此操作,但如果用户关闭应用程序,则无法使用计时器。

我不反对使用第三方调度程序或类似工具。欢迎任何建议。

我已查看了可能的重复问题和答案( Cloud Functions for Firebase trigger on time?)但是,该答案中的大多数链接都已过时。此外,那是指定期安排某些事情。例如,每小时,每天一次等等... 我要安排在触发(用户操作)后45分钟内执行作业,并且可以在该45分钟窗口内取消作业。


你不能在你的应用程序中实现。它必须在你的后端完成。你的后端是否只有Firebase数据库? - GIJOW
是的,我的后端是Firebase。我不反对为此功能添加另一个后端。也许在AWS内部使用一些东西? - goalguy
你可以在AWS Lambda上编写你自己的代码。但据我所知,AWS没有插拔式服务供应此功能。 - GIJOW
5个回答

2

0

0

云函数没有内置的方法来延迟触发或在一定延迟后重新触发。我认为使用 Cloud Functions 的最佳方式是设置一个周期性触发器,如此处所示:Firebase 上的云函数何时触发?。然后在该周期性触发器中确定必须运行哪些作业。


有没有其他后端或服务可以完成这个任务?可能是AWS内部的某些东西吗? - goalguy
1
这是在要求技术推荐,这在 Stack Overflow 上是不相关的(因为它往往会吸引有主观看法的答案)。 - Frank van Puffelen
这仍然是答案吗,还是Google最近添加了延迟函数的功能? - yuval
对于产品级别来说,这并没有改变什么,尽管现在有一些不同的例子。我建议阅读Doug的博客:https://medium.com/firebase-developers/how-to-schedule-a-cloud-function-to-run-in-the-future-in-order-to-build-a-firestore-document-ttl-754f9bf3214a - Frank van Puffelen

0

我最近遇到了一个类似的问题,通过使用Cloud SchedulerFirestore得到了解决。我设置了一个作业,每5分钟触发一次云函数,检查一个Firestore集合。它会检索出应该触发云函数的时间,并触发它。这也取决于您需要多么准确的时间触发器。让它无缘无故地触发并不是最优的选择,但在我的情况下它起作用了。


-1

Javascript/Typescript 允许您延迟使用 setTimeout 函数

// time is in milliseconds
function delay(time:number) {
  return new Promise(res => {
    setTimeout(() => {
      res("VALUE TO RESOLVE");
    }, time);
  });
}

然后通过执行const res = await delay(1000);来调用它。


除非您有短暂的延迟,否则请勿这样做。函数仍将运行(消耗资金),并且很可能会超时。最大超时时间取决于函数类型,为10或60分钟。 - D W

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接