2017-07-12 57 views
1

我正在开发一个云端函数,它触发数据库中的新对象,并且需要在8小时后删除该对象。现在,我正在使用setTimeout来安排该操作,但我不熟悉这种方法,因为我知道函数执行速度应该很快(我在某处读取的最大时间为60秒)。推迟在Firebase Cloud中执行任务

有关如何以适当方式实现此目的的任何想法?

+1

没有什么内置的延迟执行你的功能。请参阅https://groups.google.com/forum/#!topic/firebase-talk/l6GMIt2rUHI –

回答

2

setTimeout()方法绝对是不是要走的路,在这种情况下。无法保证云功能实例将在8小时后继续运行。

谷歌不提供云功能的调度程序,你最好的办法是创建某种调度队列。在创建对象时,将任务添加到队列中以在8小时后将其删除。定期(每分钟说)通过cron服务运行cron作业,该服务会触发HTTPS云端函数,该函数读取队列以查看是否有任何对象要执行操作。或者,如果对象具有与其关联的创建时间,则可以定期运行HTTPS Cloud Function(由外部cron作业触发),根据创建时间对过期对象执行查询并将其删除。

+0

我还正在使用geofire打开地理查询,以将推送通知发送给进入特定区域的用户。只要触发这些通知的情况得到满足,该地理查询就必须保持打开状态,所以我用另一个setTimeout取消了该地理查询。有什么办法通过使用云功能来实现这种行为? –

+0

这是一个稍微不同的问题。你最好的办法是打开一个新的SO问题来问问它。 – Prisoner