firebase - Google Cloud Function HTTPS 触发器中的幂等性
问题描述
大多数 Firebase 云函数触发函数签名都包含一个具有eventId
属性的上下文对象。
查看文档,HTTPS 触发器似乎并非如此。
假设每个请求只触发一次 HTTP 函数调用是否安全?
解决方案
杰克的回答大部分是正确的,但我会在这里澄清一下。
关于执行语义的文档在这里。要清楚:
HTTP 函数最多调用一次。这是因为 HTTP 调用的同步特性,这意味着处理函数调用时出现的任何错误都将返回而无需重试。HTTP 函数的调用者应处理错误并在需要时重试。
不能保证 HTTP 函数只执行一次。某些执行可能在到达函数之前失败。这与提供至少一次执行的所有其他(后台)类型的函数不同:
后台函数至少被调用一次。这是因为处理事件的异步性质,其中没有调用者等待响应并且可以重试错误。发出的事件调用函数,可能会在失败时重试(如果在函数部署时请求)和由于其他原因偶尔重复调用(即使未请求失败时重试)。
因此,为了使后台函数 100% 正确,它们应该是幂等的。
如果你想重试失败的 HTTP 函数,客户端必须执行重试,在这种情况下,你可能希望 HTTP 函数也是幂等的。在这种情况下,客户端必须在重试时提供唯一密钥。
请注意,无法将 HTTP 函数标记为内部重试。这仅适用于后台功能。
推荐阅读
- c# - 在 nunit3 中忽略了测试超时
- python - 在 XML 文件中搜索字符串并在菜单树中打印位置 - Python
- python - 包含编号和名称排序的列表
- vba - VBA最小值和表格
- visual-studio-code - 如何在 Visual Studio 代码中按源列出快捷方式?
- android - 水平 RecyclerView 的 ItemTouchHelper
- javascript - 如何使 EXT JS 模型和代理商店工作?(请帮忙!)
- amazon-web-services - 如何从控制台获取 aws apigateway 中 api 的部署 ID?
- amazon-web-services - 具有 S3 源的 CloudFront 分配以 XML ListBucketResult 响应
- excel - 使用没有日期/时间格式的 Excel VBA 检查时间