在 Firebase Cloud Function 中延迟任务

Deferring tasks in Firebase Cloud Function

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

关于如何以正确的方式实现这一点有什么想法吗?

在这种情况下,

setTimeout() 方法绝对不是 方法。无法保证 Cloud Function 实例在 8 小时后 运行ning。

Google 还没有为 Cloud Functions 提供调度程序,最好的办法是创建某种调度队列。创建对象时,向队列中添加一个任务,8 小时后将其删除。定期(例如,每分钟)运行 通过 cron 服务触发 HTTPS 云函数的 cron 作业,该函数读取队列以查看是否有任何对象需要操作。

或者,如果对象有与之关联的创建时间,您可以 运行 一个 HTTPS 云函数定期(再次由外部 cron 作业触发)根据它们的过期对象查询创建时间并删除它们。