如何创建动态计划任务?

How to create a dynamically scheduled task?

我正在尝试创建一个模拟在栏中打开标签页的应用程序。我 运行 遇到了一个我似乎无法弄清楚的问题 - 它如下所示:

  1. 当有人打开栏标签时,动态创建一个计划任务,执行代码在 24 小时后关闭标签。

  2. 如果选项卡在 24 小时之前关闭,则取消计划任务。

  1. 如果选项卡在 24 小时后仍未关闭,请执行步骤 1 中描述的代码以在用于打开选项卡的卡上发起付款。

我最初是在研究 Firebase 函数,并考虑使用 setTimeout() 可调用函数,但在做了一些研究后,我发现 Firebase 函数的调用时间不能超过 9 分钟。

注意:我希望这是动态的。意思是,让它占可变数量的用户。平台上可能有 100 或 1000 个用户,他们每个人都需要能够为他们安排一个独特的计划任务(有时每个用户多个)。

请查看完整解决方案的评论。

有多种方法可以规避 10 分钟规则(这在无服务器代码中很普遍),但这里有一些可以帮助您的方法。我建议将任务分成三部分:

  1. 调用时关闭选项卡的云函数。
  2. 调用它的调度函数 (https://firebase.google.com/docs/functions/schedule-functions)
  3. 一种启动和停止计划功能的方法。

我不确定 firebase 函数是如何工作的,但我之前使用过 azure 函数并且可以使用命令行 (CLI) 或使用您选择的语言的 sdk 来控制这些函数。要使用命令行取消,请尝试这样的操作:

firebase functions:delete scheduledFunction

来自

现在剩下的就是如何弄清楚如何启动函数,以及是否可以传入一个参数来调度它。

祝你好运!