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

Posted

技术标签:

【中文标题】Google Cloud Function - 检测是不是发生重试【英文标题】:Google Cloud Function - Detect if retry occuredGoogle Cloud Function - 检测是否发生重试 【发布时间】:2021-08-29 15:19:26 【问题描述】:

我的设置

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

我已启用该功能的重试。我的函数可能会因 memory exceeded 错误而失败。

我希望完成的事情

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

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

问题

我如何知道正在执行重试?

【问题讨论】:

这能回答你的问题吗? How to identify retried google cloud function? 【参考方案1】:

正如您在the documentation的这个页面中看到的,交付尝试字段是:

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

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

【讨论】:

以上是关于Google Cloud Function - 检测是不是发生重试的主要内容,如果未能解决你的问题,请参考以下文章

从 Cloud Function (python) 写入 Google Cloud Storage

Cloud Function 部署问题以安排每日 Cloud SQL 导出到 Google Cloud Storage

在 Google Cloud Function 中设置环境变量

如何修改后台 Cloud Function 的 Google Cloud Pub/Sub 订阅确认截止日期

Google Cloud Pub/Sub - Cloud Function & Bigquery - 数据插入未发生

Python Google Cloud Function 记录严重性和重复项