我有一个Firebase Cloud Function,有时可能需要一段时间才能完成(20-60秒)。
通过写入Firebase表示gets triggered,这表示它在onCreate事件上开始处理。
我一直通过每N秒在Firebase中创建一条新记录来进行一些脚本化测试,但是似乎如果N少于20秒,则下一个onCreate触发器不会触发。
换句话说,我最终遇到这样的情况:
Firebase:
触发函数将结果写入Firebase中的另一个节点:
...record2,record3,record4似乎没有再次触发该功能。
我已经重新检查了Firebase文档,但似乎找不到任何可以解释这种情况的信息。
There is some information about quotas用于已连接的用户,但仅与已连接的用户有关,而不是在先前触发的功能完成之前多次触发相同的触发器。
如果Firebase触发的函数在先前触发的函数仍在运行时被触发,默认行为是什么?
如果有新的onWrite触发正在运行的功能,是否有任何方法可以取消它?
这些已触发和正在运行的功能是否有队列? (this queue似乎不是一个)
如果Firebase触发的函数在先前触发的函数仍在运行时被触发,默认行为是什么?
无法保证如何调用函数-它们可以在单个服务器实例上顺序发生,也可以在多个服务器实例上并行运行。也不能保证函数的调用顺序。
如果有新的onWrite触发正在运行的功能,是否有任何方法可以取消它?
编号
这些已触发和正在运行的功能是否有队列? (此队列似乎不是一个)
没有可见的队列。在内部,Cloud Functions使用pubsub来管理数据库发出的事件流,但这是一个实现细节,您无法直接控制它的工作方式。
关于为什么您的函数在期望时似乎没有执行-问题中没有足够的细节来猜测。如果没有看到实际的代码以及重现此问题所采取的具体步骤,就无法说了。
您可能想观看我的video series on how Cloud Functions works,以便更好地了解其行为。