我有一个HTTP Firebase云功能,偶尔需要很长时间才能完成。对于这个特定用例,我不希望我的用户等到函数完成后才能收到200
响应。
所以我像往常一样res.status(200).send();
,但是在执行结束时我没有尝试过,而是在函数开始时尝试了。{p>问题是这会停止执行。
作为一种解决方法,我正在考虑将重负载转移到另一个函数并从实时数据库中的写入触发它,但是将这个逻辑放在一个函数中要容易得多。
有没有解决这个限制的方法?
答案 0 :(得分:5)
发送响应后无法继续执行。您通过写入实时数据库来触发第二个后台功能的直觉是一个很好的(使用Cloud Pub / Sub也是一个不错的选择)。
虽然这可能是额外的步骤,但它通常也是一种很好的做法 - 您可以独立于用户关键的请求路径控制扩展处理的重试和计时语义。通常,这种事情是消息队列的教科书案例。 :)