Background
我有一个Firebase云功能,有时可能需要一段时间才能完成(20-60秒(。
它由写入 Firebase 触发,这意味着它会在 onCreate 事件时开始处理。
问题
我一直在做一些脚本测试,每 N 秒在 Firebase 中创建一条新记录,但似乎如果 N 小于 20 秒,下一个 onCreate 触发器就不会触发。
换句话说,我最终会陷入这样的境地:
火力基地:
- 记录1
- 记录2
- 记录3
- 记录4
触发函数写入 Firebase 中另一个节点的结果:
- 从记录中得出的结果1
。 记录 2、记录 3、记录 4 似乎不会再次触发该功能。
作业
我已经重新检查了Firebase文档,但我似乎找不到任何解释这种情况的信息。
有一些关于已连接用户的配额的信息,但它仅与已连接的用户有关,而不是关于在先前触发的函数完成之前多次触发的相同触发器。
问题
如果 Firebase 触发函数在之前触发的函数仍在运行时被触发,它的默认行为是什么?
如果正在运行的函数被新的onWrite触发,有什么方法可以取消它?
这些触发和正在运行的函数是否有任何队列?(这个队列似乎不是那个(
如果 Firebase 触发的函数在之前触发的函数仍在运行时被触发,它的默认行为是什么?
无法保证如何调用函数 - 它们可以在单个服务器实例上按顺序发生,也可以在多个服务器实例上并行运行。 函数调用的顺序也不保证。
如果正在运行的函数被新的onWrite触发,有什么方法可以取消它?
不。
这些触发和正在运行的函数是否有任何队列?(这个队列似乎不是那个(
没有可见的队列。 在内部,Cloud Functions 使用 pubsub 来管理数据库发出的事件流,但这是一个实现细节,您无法直接控制它的工作方式。
至于为什么你的函数似乎没有按照你的预期执行 - 你的问题中没有足够的细节来猜测。 如果没有看到实际代码以及重现问题的具体步骤,就不可能说。
你可能想观看我关于云函数如何工作的视频系列,以便更好地了解它的行为。