Google Cloud Function - 检测是否发生重试

Google Cloud Function - Detect if retry occured

我的设置

我有一个后台 Google Cloud Function 接收来自 PubSub 订阅的请求。函数写在python3.8.

我已启用该功能的重试。我的功能可能会因 超出内存 错误而失败。

我想完成的事情

我想知道函数收到的请求是否是retry。我想优雅地处理函数失败的情况,所以它第二次到达我会处理它。

使用最大投递尝试和死信主题并不是我想要的,因为 max_delivery_attempt 的最小数量是 5。在那种情况下,我的函数可能会在到达死信主题之前失败 5 次。我希望它最多失败一次然后处理那个案例。

问题

我怎么知道正在执行重试?

如您在 the documentation 的页面中所见,投递尝试字段为:

  • 仅当您拉取订阅时可用,当您直接在 PubSub 上插入您的函数时不可用(它是推送订阅并包装在一个特殊的交付包中)
  • 仅当您在订阅中设置死信主题时才会填充,否则值为 0。

因此,如果您需要跟踪此值,我建议您在外部数据库(例如 firestore)中进行跟踪。