停止Orchestrator后Durable Function仍运行?是否为设计如此?
问题解答
1. 终止编排器后活动继续运行是设计如此吗?
是的,这是Durable Functions的默认设计行为。当你终止编排器时,只会停止编排器自身的后续调度逻辑,但已经启动执行的活动函数会继续运行直到完成——因为活动函数是独立于编排器执行的,Durable Task Framework不会主动中断正在运行中的活动进程。
如果需要实现活动函数的中途终止,得手动添加中断逻辑:
- 在活动函数内部定期检查终止信号(比如通过Durable实体存储的状态、Blob存储的标记,或者编排器传递的终止指令)
- 一旦检测到终止信号,主动抛出异常或退出函数执行
2. 长时间运行的函数只能用Durable吗?常规Azure Function是否适用?
常规Azure Function确实不适合运行超过60分钟的任务:
- 消费计划默认超时10分钟,最多可调整至60分钟
- 高级计划和专用计划的固定超时也是60分钟
如果你的任务运行时长超过20分钟(甚至更久),Durable Functions是合适的选择——它的活动函数在高级/专用计划下可以突破常规Function的超时限制(依托Durable的持久化调度机制,活动的实际运行时长主要受限于你的资源配置和任务本身)。如果只是单步长时间任务,也可以考虑用Azure Logic Apps或Azure Batch,但如果坚持用函数形态,Durable Functions是最优解。
内容的提问来源于stack exchange,提问作者jeancallisti
相关产品推荐
相关产品推荐

