gpt4 book ai didi

firebase - 如何处理firebase触发函数执行顺序

转载 作者:行者123 更新时间:2023-12-04 03:09:43 27 4
gpt4 key购买 nike

我有一个 firebase http 函数,可以将数据附加到 firebase 数据库列表。第二个函数配置为在列表更改时处理列表,然后更新一些摘要数据。就我而言,这些更新是突然出现的。我正在使用 node.js firebase 函数。

查看 firebase 日志,我从一个空列表开始时看到了这个序列:

  1. 从 http 添加到列表 - 列表有 1 个元素
  2. 从 http 添加到列表 - 列表有 2 个元素
  3. 从 http 添加到列表 - 列表有 3 个元素
  4. 从 http 添加到列表 - 列表有 4 个元素
  5. 用 1 个元素总结列表
  6. 总结包含 3 个元素的列表
  7. 用 4 个元素总结列表
  8. 总结包含 2 个元素的列表

我的问题是摘要只包含 2 个元素而不是 4 个。

汇总触发器函数似乎是并行调用的,而不是顺序调用的,因此当多个触发器非常接近时,最后完成的可能是最先触发的触发器之一,而不是最后一个。

可以使用哪些方法来确保摘要计算具有“所有数据”并且之前运行较慢的摘要计算不会覆盖后面的摘要计算?能否将 firebase 函数触发器序列化以按照它们启动的顺序执行?

理想情况下,我想避免在突发事件发生时计算摘要 N 次,因此某些解决方案可以在未来的某个短时间内“安排”摘要,然后在出现新事件时取消并重新安排做个好人。

最佳答案

绝对不能保证来自多个客户端或调用的事件的传递顺序。事实上,您甚至很难定义事件的时间,因为在客户端发出请求的那一刻和您的函数中的最终工作为该客户端完成的那一刻之间有很多可变的移动部分。

您能做的最好的事情是假设多个客户端都有效地向您的函数发送乱序请求,并使用数据库事务来防止它们进行的写入发生任何类型的冲突。

如果您绝对必须序列化事物,则需要让其他一些程序或代理定义正确的序列并序列化所有工作,确保所有写入都以可预测的顺序发生。

如果您想阅读关于为什么订购困难的扩展讨论,read this article (Cloud Functions 建立在 pubsub 之上)。

关于firebase - 如何处理firebase触发函数执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46257544/

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