延迟Firebase云功能中的任务

时间:2017-07-12 20:35:20

标签: firebase google-cloud-functions

我正在开发一个触发数据库新对象的云功能,需要在8小时后删除该对象。现在我使用setTimeout来安排这个操作,但我对这种方法感到不舒服,因为我知道函数执行速度应该很快(最多我在某处阅读60秒)。

如何以正确的方式实现这一目标?

1 个答案:

答案 0 :(得分:2)

在这种情况下,setTimeout()方法绝对是的方法。无法保证Cloud Function实例在8小时后仍然可以运行。

Google还没有为云功能提供调度程序,您最好的选择是创建某种调度队列。创建对象后,将任务添加到队列中以在8小时后将其删除。定期(比如说每分钟)通过一个cron服务运行一个cron作业,该服务触发一个HTTPS云函数,该函数读取队列以查看是否有任何对象被执行。

或者,如果对象具有与之关联的创建时间,则可以定期运行HTTPS云功能(由外部cron作业再次触发),该功能根据创建时间对过期对象进行查询并将其删除。