【问题标题】:How to split long execution time functions on Firebase Cloud Functions如何在 Firebase Cloud Functions 上拆分长执行时间的函数
【发布时间】:2019-09-12 03:10:58
【问题描述】:

假设我有函数 A、B、C、D,它们都没有超过 Firebase Cloud Functions 的执行时间限制。但是如果在函数 A 的末尾它调用函数 B,在函数 B 的末尾,它调用函数 C ...等等,如下所示:

function A(): Promise {
    doStuffA()
    return httpPostFunctionB()
}

function B(): Promise {
    doStuffB()
    return httpPostFunctionC()
}

function C(): Promise {
    doStuffC()
    return httpPostFunctionD()
}

function D() {
    doStuffD()
}

加起来会超过时间限制。

有没有什么办法可以让函数A不用等待函数B,又能保证函数B被完全执行?

我认为有可能,我们可以让函数 A 修改 Firestore 中的某个值,然后让函数 B 监听该值的变化。但我想知道是否有更清洁的方法来做到这一点。

【问题讨论】:

  • 听起来函数 B 实际上只需要等到 A 完成之后,如果它需要处理结果。我不确定你为什么建议让它们并行运行并让 B “听”“A”的结果。
  • 这个想法是它们是一个大功能的 4 个部分,我将它们分成 4 个不同的部分,这样每个部分都不会超过时间限制。 A() 的结果只是我用来触发 B() 的一个虚拟变量。否则我不知道如何在 A() 完成后触发 B() 而不让 A() 等待 B() 并超过时间限制。
  • 时间限制是多少?如果您需要比 Cloud Functions 允许的更多处理时间,那么该产品可能不适合您。也许 App Engine 或 Compute Engine 会更好,因为它们可以处理没有实时限制的批处理作业。
  • 我可以将重心移到计算引擎上,但是由于我需要 Firebase 身份验证的东西,所以 API 仍然需要是 Cloud Functions。当 API 等待计算引擎响应时。会超过云功能时间限制。
  • 再次,时间限制是多少?你到底想完成什么?

标签: typescript firebase google-cloud-functions


【解决方案1】:

您可以延长 Cloud Functions 的超时时间。默认的 1 分钟可延长至 9 分钟。对此请read the documentation

如果您需要超过 9 分钟,则需要考虑将工作委托给没有严格限制的服务,例如 App Engine 或 Compute Engine。但无法更改 Cloud Functions 的 9 分钟限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 2022-07-28
    • 2023-04-10
    • 2019-01-04
    • 2021-04-22
    • 2019-09-17
    • 2018-10-24
    相关资源
    最近更新 更多