Typescript 如何在Firebase云函数上拆分长执行时间函数
假设我有函数A、B、C、D,它们都没有超过Firebase云函数的执行时间限制。但是如果在函数A的末尾调用函数B,在函数B的末尾调用函数C。。。以此类推,如下所示:Typescript 如何在Firebase云函数上拆分长执行时间函数,typescript,firebase,google-cloud-functions,Typescript,Firebase,Google Cloud Functions,假设我有函数A、B、C、D,它们都没有超过Firebase云函数的执行时间限制。但是如果在函数A的末尾调用函数B,在函数B的末尾调用函数C。。。以此类推,如下所示: function A(): Promise { doStuffA() return httpPostFunctionB() } function B(): Promise { doStuffB() return httpPostFunctionC() } function C(): Promise
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监听该值的变化。但是我想知道是否有更干净的方法来做到这一点。您可以延长云功能的超时时间。默认值1分钟可延长至9分钟。请考虑一下
如果您需要超过9分钟,您需要考虑将工作委托给没有严格限制的服务,例如App Engine或CealEngine。但是云函数的9分钟限制不能更改。
听起来函数B实际上只需要等到A完成后,如果它需要处理结果的话。我不知道你为什么提议让它们并行运行,让B“听”A的结果。想法是它们是一个大功能的4个部分,我把它们分成4个不同的部分,这样每个部分都不会超过时间限制。A()的结果只是我用来触发B()的一个伪变量。否则我不知道如何在A()完成()后触发B(),而不让A()等待B()并超过时间限制。时间限制是多少?如果您需要的处理时间超过云功能所允许的时间,那么该产品可能不适合您。也许App Engine或Compute Engine会更好,因为它们可以处理无实时限制的批处理作业。我可以将最重要的部分转移到Compute Engine,但因为我需要Firebase身份验证功能,所以API仍然需要是云函数。当API等待计算引擎响应时。它将超过云功能的时间限制。再说一次,时间限制是多少?你到底想完成什么?