Azure持久函数的活动函数中的超时 [英] Timeout in an Activity Function of Azure Durable Functions
本文介绍了Azure持久函数的活动函数中的超时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的活动功能中,我正在执行此操作
do {
await timeout(500);
} while (await getStatus() === false);
Where,
function timeout(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
getStatus()
是一个函数,它执行get
请求以查看其他服务中的进程是否完成,并基于此返回true
或false
。
我需要我的活动函数在其他服务中的进程完成之前等待。但默认情况下,活动函数的执行时间限制为5分钟。
我的getStatus()
可能需要超过2-3个小时或更长时间才能返回true
。
我能在这里做些什么?有什么建议吗?
推荐答案
您有几个选项:
选项A:使用监控模式+倒带
是否可以将getStatus
代码拆分到另一个活动函数?如果是,则假定:
ActivityFunction_A
-包含使用getStatus()
轮询的do-While循环之前的代码
ActivityFunction_B
-包含使用maximum execution time of 10 minutes轮询getStatus
的代码。ActivityFunction_C
-包含getStatus
返回TRUE
后的代码
您现在可以编排工作流序列
ActivityFunction_A => ActivityFunction_B => ActivityFunction_C
使用Monitor模式。
由于任何一个活动函数都可能失败或超时,并且执行每个活动函数都有潜在的副作用,因此您还应该使用Rewind功能(当前处于预览中)来仅从序列中第一个失败的活动函数开始回放和重播。选项B:使用应用服务计划
如果您的工作流不需要动态向外扩展到许多实例,则可以在AlwaysOn打开的情况下将您的函数迁移到App Service Plan。
这篇关于Azure持久函数的活动函数中的超时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文