当另一个Firebase函数已在运行时再次发生onCreate事件时会发生什么?

问题描述 投票:1回答:1

背景

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

通过写入Firebase表示gets triggered,这表示它在onCreate事件上开始处理。

问题

我一直通过每N秒在Firebase中创建一条新记录来进行一些脚本化测试,但是似乎如果N少于20秒,则下一个onCreate触发器不会触发。

换句话说,我最终遇到这样的情况:

Firebase:

  1. record1
  2. record2
  3. record3
  4. record4

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

  1. 记录结果1

...record2,record3,record4似乎没有再次触发该功能。

作业

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

There is some information about quotas用于已连接的用户,但仅与已连接的用户有关,而不是在先前触发的功能完成之前多次触发相同的触发器。

问题

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

如果有新的onWrite触发正在运行的功能,是否有任何方法可以取消它?

这些已触发和正在运行的功能是否有队列? (this queue似乎不是一个)

javascript firebase firebase-realtime-database promise google-cloud-functions
1个回答
1
投票

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

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

如果有新的onWrite触发正在运行的功能,是否有任何方法可以取消它?

编号

这些已触发和正在运行的功能是否有队列? (此队列似乎不是一个)

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

关于为什么您的函数在期望时似乎没有执行-问题中没有足够的细节来猜测。如果没有看到实际的代码以及重现此问题所采取的具体步骤,就无法说了。

您可能想观看我的video series on how Cloud Functions works,以便更好地了解其行为。

© www.soinside.com 2019 - 2024. All rights reserved.