1

我的应用程序托管在 firebase 中。它是一个带有 Firestore 数据库的 Angular 应用程序。我目前有一个场景,我需要检查某些内容是否已过期,然后对其采取行动。为此,我目前有一个节点应用程序在应用程序引擎中运行,该应用程序安排了一个每 2 秒运行一次的 cron 作业,以轮询 firestore 数据库以获取集合,并查看过期时间是否早于当前时间,然后执行预期任务。

cron.schedule("*/2 * * * * *", fn => {
   // code here for intended task
}

由于这个 2 秒的 cron 作业,我必须在应用引擎上维护一个实例。我试图看看我是否可以使用云调度程序来安排工作,这样我就可以通过在应用引擎中没有实例来节省一些钱。

但是云调度程序的粒度只有每 1 分钟一次,我正在寻找以秒为单位的粒度,以便我可以安排一个作业每 2 秒运行一次。有没有一种方法可以实现这一点,而无需在应用引擎上托管应用程序。

4

1 回答 1

1

一般来说,轮询是相当浪费的,如果可能的话尝试用更好的东西代替它。

例如,在您的情况下,一旦设置了到期时间,您还可以确定应该执行预期任务的确切时间(即您尝试通过轮询确定的时间)。

在(第一代标准环境)应用程序引擎中,我只需将预期任务作为延迟推送任务队列项排入队列。可以是绝对值,也可以是相对于当前时间的值。无需轮询,只要 eta 到达,任务就会执行。

我不熟悉 angular/firebase,但在我看来,Angular 任务服务 API非常相似。

于 2019-04-23T04:54:07.647 回答