首页 > 解决方案 > Google Cloud Function HTTPS 触发器中的幂等性

问题描述

大多数 Firebase 云函数触发函数签名都包含一个具有eventId属性的上下文对象。

查看文档,HTTPS 触发器似乎并非如此。

假设每个请求只触发一次 HTTP 函数调用是否安全?

标签: firebasegoogle-cloud-platformgoogle-cloud-functions

解决方案


杰克的回答大部分是正确的,但我会在这里澄清一下。

关于执行语义的文档在这里。要清楚:

HTTP 函数最多调用一次。这是因为 HTTP 调用的同步特性,这意味着处理函数调用时出现的任何错误都将返回而无需重试。HTTP 函数的调用者应处理错误并在需要时重试。

不能保证 HTTP 函数只执行一次。某些执行可能在到达函数之前失败。这与提供至少一次执行的所有其他(后台)类型的函数不同:

后台函数至少被调用一次。这是因为处理事件的异步性质,其中没有调用者等待响应并且可以重试错误。发出的事件调用函数,可能会在失败时重试(如果在函数部署时请求)和由于其他原因偶尔重复调用(即使未请求失败时重试)。

因此,为了使后台函数 100% 正确,它们应该是幂等的。

如果你想重试失败的 HTTP 函数,客户端必须执行重试,在这种情况下,你可能希望 HTTP 函数也是幂等的。在这种情况下,客户端必须在重试时提供唯一密钥。

请注意,无法将 HTTP 函数标记为内部重试。这仅适用于后台功能。


推荐阅读