【问题标题】:Firebase Cloud Function - Promises : Is there any limitation to the number of 'promises' that can be added to Promise.all()?Firebase Cloud Function - Promises:可以添加到 Promise.all() 的“promise”数量是否有任何限制?
【发布时间】:2020-02-18 04:25:29
【问题描述】:

所以 Promise.all() 确实让生活变得更简单。

但是对于可以添加到 'Promise.all()' 的 Promise 的数量是否有任何限制

即以下代码中是否有对数组“promises”大小的限制:-

const promises = [];

    snapshot.forEach(doc => {

        **some code**

        promises.push(
            docRef.set(newData, {merge: true})
        );

    });

    return Promise.all(promises);

------------------------------------------ --------------------------

进一步说明:

我正在使用此 Cloud Function 来更新我的应用程序上的所有用户。

模型数据库结构:Users/userId

由于用户数量很少,我暂时没有遇到任何问题。

但是,随着用户数量的增长我担心我是否会达到一些限制..

根据以下人指出的问题:

1) david - 浏览器的最大并发 Web 请求会减慢速度

2) herohtar - 函数可用的内存有限

这两个问题表明,也可能存在一些限制。

那么,任何人都可以指向官方文档吗? 要么 Firebase 团队中的任何人,如果你们能对此有所了解的话。

【问题讨论】:

  • 可能有一个限制,但它会非常非常大,比你曾经遇到的要大得多。您更有可能遇到其他问题,例如浏览器的最大并发 Web 请求会减慢速度。你问来干什么?只是好奇还是您有实际问题?
  • 既然您在谈论 Firebase Cloud Functions,由于您的函数可用的内存有限,因此可能会遇到一些限制,除非您分配的内存超过了默认值。
  • @Herohtar - 感谢您指出内存问题。现在正在努力。 ??????
  • @david - 是否有关于“最大并发 Web 请求”问题的官方参考资料?或者我可以做些什么来解决这个问题?
  • 不是专门针对 Promises,但您可以批量写入 Firestore。让生活更轻松firebase.google.com/docs/firestore/manage-data/transactions

标签: javascript firebase promise google-cloud-firestore google-cloud-functions


【解决方案1】:

如果此函数必须扩展到大量用户,那么在超出任何承诺数量限制之前,您几乎肯定会遇到更多超出函数内存和时间限制的问题。我强烈建议您仔细考虑是否真的想在 N 可能非常大的函数中加载和执行 N 个任务。这不是 Cloud Functions 的用途。

如果您确实需要以可扩展的方式执行 N 个任务,并且必须使用 Cloud Functions,请考虑将您的工作分解为可管理、可预测的大小,并将工作拆分为多个函数调用。

【讨论】:

  • 谢谢,这正是我想要的。您能否给我一个关于云功能可用于最大 N 的近似数字? (因此,任务以最少数量的函数调用执行)
  • 不,我不能,因为每个工作项目及其内存要求可能会有很大差异,因为您的问题不是很具体。我建议您执行自己的基准测试或针对您自己的实际场景进行测试。
猜你喜欢
  • 2020-02-20
  • 1970-01-01
  • 2018-12-27
  • 2018-12-26
  • 2017-12-31
  • 2019-06-03
  • 1970-01-01
  • 2018-09-22
  • 1970-01-01
相关资源
最近更新 更多