首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure持久函数的活动函数中的超时

Azure持久函数的活动函数中的超时
EN

Stack Overflow用户
提问于 2018-12-20 07:33:01
回答 1查看 3.5K关注 0票数 0

在我的活动功能中,我是这样做的

代码语言:javascript
复制
do {
     await timeout(500);
} while (await getStatus() === false);

哪里,

代码语言:javascript
复制
function timeout(ms) {
      return new Promise(resolve => setTimeout(resolve, ms));
}

getStatus()是一个函数,它执行get请求以查看其他服务中的进程是否完成,并在此基础上返回truefalse

在其他服务中的流程完成之前,我需要我的活动函数等待。但是默认情况下活动函数的执行限制为5分钟。根据不同的场景,我的getStatus()可能需要超过2-3个小时才能返回true

我在这里能做什么?有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-21 20:32:33

你有几个选择:

选项A:使用监视器模式+倒带

你能把getStatus代码分割成另一个活动函数吗?如果是,则假设如下:

  1. ActivityFunction_A -包含在使用getStatus()轮询的do-while循环之前的代码。
  2. ActivityFunction_B --包含使用最长执行时间为10分钟轮询getStatus的代码。
  3. ActivityFunction_C -包含getStatus返回TRUE后的代码

您现在可以编排工作流序列了。

代码语言:javascript
复制
ActivityFunction_A => ActivityFunction_B => ActivityFunction_C

使用监视器模式。

由于任何一个活动函数都可能失败或超时,并且执行每个活动函数可能会产生副作用,因此您还应该使用倒卷特性(目前正在预览中)来从序列中的第一个失败的活动函数开始回放和重放。

选项B:使用应用程序服务计划

如果您的工作流实际上不需要动态扩展到许多实例,那么您可以在打开App服务计划之后将您的函数迁移到AlwaysOn

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53864209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档