在我的活动功能中,我是这样做的
do {
await timeout(500);
} while (await getStatus() === false);哪里,
function timeout(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}getStatus()是一个函数,它执行get请求以查看其他服务中的进程是否完成,并在此基础上返回true或false。
在其他服务中的流程完成之前,我需要我的活动函数等待。但是默认情况下活动函数的执行限制为5分钟。根据不同的场景,我的getStatus()可能需要超过2-3个小时才能返回true。
我在这里能做什么?有什么建议吗?
发布于 2018-12-21 20:32:33
你有几个选择:
选项A:使用监视器模式+倒带
你能把getStatus代码分割成另一个活动函数吗?如果是,则假设如下:
ActivityFunction_A -包含在使用getStatus()轮询的do-while循环之前的代码。ActivityFunction_B --包含使用最长执行时间为10分钟轮询getStatus的代码。ActivityFunction_C -包含getStatus返回TRUE后的代码您现在可以编排工作流序列了。
ActivityFunction_A => ActivityFunction_B => ActivityFunction_C使用监视器模式。
由于任何一个活动函数都可能失败或超时,并且执行每个活动函数可能会产生副作用,因此您还应该使用倒卷特性(目前正在预览中)来从序列中的第一个失败的活动函数开始回放和重放。
选项B:使用应用程序服务计划
https://stackoverflow.com/questions/53864209
复制相似问题