Node.js Azure持久函数的活动函数中的超时
在我的活动功能中,我正在这样做Node.js Azure持久函数的活动函数中的超时,node.js,azure,settimeout,azure-durable-functions,Node.js,Azure,Settimeout,Azure Durable Functions,在我的活动功能中,我正在这样做 do { await timeout(500); } while (await getStatus() === false); 在哪里, function timeout(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } getStatus()是一个函数,它执行get请求以查看其他服务中的进程是否完成,并基于此返回true或false 我需要我的活动函数等
do {
await timeout(500);
} while (await getStatus() === false);
在哪里,
function timeout(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
getStatus()
是一个函数,它执行get
请求以查看其他服务中的进程是否完成,并基于此返回true
或false
我需要我的活动函数等待其他服务中的进程完成。但默认情况下,活动函数的执行时间限制为5分钟。
mygetStatus()
可能需要2-3小时或更长时间才能返回true
我能在这里做什么?有什么建议吗 您有两个选择: 选项A:使用监视器模式+倒带 您是否可以将
getStatus
代码拆分为另一个活动函数?如果是,则假设如下:
ActivityFunction\u A
-在使用getStatus()轮询的do while循环之前包含代码
ActivityFunction\u B
-包含使用轮询getStatus
的代码ActivityFunction\u C
-在getStatus
返回TRUE
ActivityFunction_A => ActivityFunction_B => ActivityFunction_C
使用该模式
由于任何一个活动函数都可能失败或超时,并且执行每个活动函数都有潜在的副作用,因此您还应该使用该功能(当前处于预览中)仅从序列中第一个失败的活动函数开始倒带和重放。
选项B:使用应用程序服务计划
如果您的工作流实际上不需要动态扩展到许多实例,那么您可以在打开的情况下将您的函数迁移到。您不能使用then callback of promise吗?