【问题标题】:Firebase, how to implement scheduler?Firebase,如何实现调度程序?
【发布时间】:2021-04-08 06:08:44
【问题描述】:

当某些信息存储在firestore中时,每个文档都存储了未来的某个特定时间,根据该时间,该事件应该在用户的应用程序中发生。

我能找到的第一个方法是 Cloud Function pub sub scheduler。但是,我不能使用这个,因为时间是固定的。

第二种方法是使用云功能+云任务。我已经参考了这个。

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

这完美的完成了我真正想要的功能,但是云任务有个致命的缺点,因为我只能保存30天之内的事件。换句话说,超过 30 天的未来时间不适用于此。

我希望长期保存此事件。我希望它对于大流量来说有点平滑。 我正在使用 Flutter/Firebase,如何实现上述要求?

感谢您阅读新年快乐

【问题讨论】:

  • 您可以考虑查看动态 cron 作业

标签: firebase flutter google-cloud-firestore google-cloud-functions


【解决方案1】:

如果任务在 30 天后到期,您可以检查在文档创建时激活的功能,如果是这样,请将其存储在其他地方(可能是另一个文档)。然后有另一个进程检查任务现在是否在 30 天范围内,然后让它与新创建的任务相同。第二个过程可以每周或每两周运行一次。

【讨论】:

  • 所以基本上你的意思是,如果是 60 天,两次节省 30 天?正确的?我也想到了这个技巧,但是它的任务太多了(假设它是 12 个月?)。因此,我不确定它是否适合大规模用户处理。
  • 我指的是分别存储超过30天到期的任务,直到它们在30天的范围内。例如,如果一项任务在 4 个月内到期,它将存储在为此目的创建的另一个集合中,并且每隔一定时间检查一次,直到它在 30 天范围内,然后作为任务发送。这样只会创建 1 个任务,而不是 4 个。
  • 对不起,我不明白。为什么是1?不是在 4 个月内创建了 4 个任务吗? (总计)
  • 您可以编写一个云函数来检查所有文档中的此日期字段,如果在 30 天内为它创建一个云任务。每隔约 30 天使用一个 cron 作业运行此函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-08
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多