gpt4 book ai didi

google-cloud-functions - 如何防止云调度器多次触发一个函数?

转载 作者:行者123 更新时间:2023-12-05 01:14:15 25 4
gpt4 key购买 nike

我使用云调度器 [* * * * *] 每分钟触发一个云函数。

Stackdriver 日志表明该函数似乎已被触发并在同一分钟内运行两次。这可能吗?

PubSub promise 至少一次交付,但我假设 GCP 会自动处理调度程序 -> 函数工作流的重复触发器。

防止此函数每分钟运行多次的良好模式是什么?

最佳答案

您的函数需要是 made "idempotent"为了确保消息只被处理一次。换句话说,您必须在某处(可能是数据库)维护消息已成功处理的状态,并检查该状态以确保消息不会被处理两次。

所有非 HTTP 类型的 Cloud Functions 在 context parameter 中提供一个唯一的事件 ID提供给函数调用。如果您看到重复的事件 ID,这意味着无论出于何种原因,您的函数都会再次针对同一消息被调用。

这种对幂等性的需求并不是 pubsub 或云调度程序所独有的。这是所有非 HTTP 类型后台函数的一个问题。

关于编写幂等函数的完整讨论是 Stack Overflow 的答案,但有一个 post in the Google Cloud blog很好地涵盖了这个问题。

另请参阅:Cloud functions and Firebase Firestore with Idempotency

关于google-cloud-functions - 如何防止云调度器多次触发一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58983706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com