安排作业在GCP Cloud Scheduler中每2秒运行一次

时间:2019-04-23 03:30:44

标签: firebase google-cloud-platform google-cloud-firestore google-cloud-scheduler

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

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

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

但是云调度程序的粒度仅到每1分钟一次,而我正在寻找以秒为单位的粒度,以便我可以调度作业每2秒运行一次。有没有一种方法可以实现这一目标,而不必在应用程序引擎上托管应用程序。

1 个答案:

答案 0 :(得分:1)

轮询通常是相当浪费的,如果可以的话,请尝试用更好的替代它。

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

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

我不熟悉角度/火力,但是在我看来Angular Task Service API非常相似。