我正在开发一个触发数据库新对象的云功能,需要在8小时后删除该对象。现在我使用setTimeout来安排这个操作,但我对这种方法感到不舒服,因为我知道函数执行速度应该很快(最多我在某处阅读60秒)。
如何以正确的方式实现这一目标?
答案 0 :(得分:2)
在这种情况下,setTimeout()
方法绝对是不的方法。无法保证Cloud Function实例在8小时后仍然可以运行。
Google还没有为云功能提供调度程序,您最好的选择是创建某种调度队列。创建对象后,将任务添加到队列中以在8小时后将其删除。定期(比如说每分钟)通过一个cron服务运行一个cron作业,该服务触发一个HTTPS云函数,该函数读取队列以查看是否有任何对象被执行。
或者,如果对象具有与之关联的创建时间,则可以定期运行HTTPS云功能(由外部cron作业再次触发),该功能根据创建时间对过期对象进行查询并将其删除。