如果 onCreate 事件再次发生,而另一个 Firebase 函数已在运行,会发生什么情况?



Background

我有一个Firebase云功能,有时可能需要一段时间才能完成(20-60秒(。

它由写入 Firebase 触发,这意味着它会在 onCreate 事件时开始处理。

问题

我一直在做一些脚本测试,每 N 秒在 Firebase 中创建一条新记录,但似乎如果 N 小于 20 秒,下一个 onCreate 触发器就不会触发。

换句话说,我最终会陷入这样的境地:

火力基地:

  1. 记录1
  2. 记录2
  3. 记录3
  4. 记录4

触发函数写入 Firebase 中另一个节点的结果:

  1. 从记录中得出的结果1

。 记录 2、记录 3、记录 4 似乎不会再次触发该功能。

作业

我已经重新检查了Firebase文档,但我似乎找不到任何解释这种情况的信息。

有一些关于已连接用户的配额的信息,但它仅与已连接的用户有关,而不是关于在先前触发的函数完成之前多次触发的相同触发器。

问题

如果 Firebase 触发函数在之前触发的函数仍在运行时被触发,它的默认行为是什么?

如果正在运行的函数被新的onWrite触发,有什么方法可以取消它?

这些触发和正在运行的函数是否有任何队列?(这个队列似乎不是那个(

如果 Firebase 触发的函数在之前触发的函数仍在运行时被触发,它的默认行为是什么?

无法保证如何调用函数 - 它们可以在单个服务器实例上按顺序发生,也可以在多个服务器实例上并行运行。 函数调用的顺序也不保证。

如果正在运行的函数被新的onWrite触发,有什么方法可以取消它?

不。

这些触发和正在运行的函数是否有任何队列?(这个队列似乎不是那个(

没有可见的队列。 在内部,Cloud Functions 使用 pubsub 来管理数据库发出的事件流,但这是一个实现细节,您无法直接控制它的工作方式。

至于为什么你的函数似乎没有按照你的预期执行 - 你的问题中没有足够的细节来猜测。 如果没有看到实际代码以及重现问题的具体步骤,就不可能说。

你可能想观看我关于云函数如何工作的视频系列,以便更好地了解它的行为。

相关内容

最新更新