我做了一个云功能来执行以下操作:
我的问题在第二步,利率限制是每分钟14次。所以我想在1到2之间创建一个Pub/Sub。创建一个订阅函数,从主题中提取消息。对其中的14条进行处理,并对这些消息进行压缩,然后解析承诺。但这给我留下了疑问:
2?
,我得到一个429响应,等待1分钟(这将被计费),
我希望有人能分享一些想法。我对云函数和异步编程很陌生。我的空穴功能和预期的一样工作,限制在5订单。就在不久之后,我打破了这个利率限制(我知道,愚蠢的我)。
发布于 2021-04-02 17:25:03
就我个人而言,我认为可以使用Firestore来存储每个id (document )的进程状态。
我的意思是,第一个函数在Firestore集合中创建(大约)400个文档--问题中的每个id都有一个文档。然后,每个文档可以用作“状态机”和给定文档处理的“日志”--从详细信息检索到发票生成和邮寄……
此外,第一个函数可以发送带有文档id的pubsub消息(到目前为止大约有400条消息)。
在公共主题的另一边,有第二个云函数。我会计算其并行运行的实例的最大数量,以最小化API速率异常,但是如果接收到异常--这不是一个问题。该函数执行实际工作,并更新消防局文档的状态(即在成功的情况下,或在例外情况下的其他状态.
然后,我们有了一些调度程序(假设每15分钟就有一次,或者10次,或者20次--我不知道上下文)、一个公共主题和另一个云功能。这个云函数(在获得调度程序的消息后)扫描Firestore集合,对于具有'exception‘状态的文档,将消息发送到第一个pubsub (见上文),以便文档可以被重新处理--这是一个“自我恢复”过程.
进程“日志”(状态更新等)可以在Firestore文档中收集,因此他们每个人都获得了整个过程是如何(多长时间)发生的“历史”.
此外,我还会使用一个专门的Stackdriver来监视它的运行情况(如果每个时间单位都有一些异常超过某个限制--例如,它会导致警报触发)。日志消息,应该包含与Firestore集合中的" Log“(和其他详细信息)大致相似的信息。
然后我会在BigQuery中使用一个接收器,并有一些报告/仪表板(如果需要的话).
最后,应该有一个自定义服务帐户来运行那些具有相关IAM角色的云功能,以处理GCP资源(pubsub、firestore、Stackdriver等).
https://stackoverflow.com/questions/66921764
复制相似问题