我有一个持久的天蓝色函数(2.0),它基于this article对其进行永久编排。下面的代码。这可以正常工作,并且可以在大约20分钟内正常运行(例如大约50次迭代)。但是,这段时间过后它将进入睡眠状态并停止工作。如果我导航到Azure门户并仅单击功能应用程序,然后单击功能列表(即,我只是四处浏览但不更改任何设置或停止/启动任何操作),它会突然“醒来”,并且继续没有问题。日志中没有错误或问题,仅指示不活动时间段,然后恢复日志。我在某处缺少设置吗?
public static async Task Run([OrchestrationTrigger] DurableOrchestrationContextBase ctx, ILogger log)
{
try
{
var config = ctx.GetInput<Config>();
config = await ctx.CallActivityAsync<Config>("GetConfig", null);
await ctx.CallActivityAsync("ProcessDetails", config);
var nextCheckpoint = ctx.CurrentUtcDateTime.AddSeconds(config.PollingIntervalInSeconds);
await ctx.CreateTimer(nextCheckpoint, CancellationToken.None);
ctx.ContinueAsNew(config);
}
catch (Exception ex)
{
log.LogError($"[Error!][Failed with: {ex.ToString()}]");
throw;
}
}
按@davidebbo所述单击刷新按钮后,问题仍然存在,请参阅下面的日志。
进一步更新,即使GitHub上的issue似乎已解决,我仍然需要按如下所示进行双重配置设置,以使我的功能可靠。
{
"version": "2.0",
"extensions": {
"durableTask": {
"HubName": "myHub",
"maxConcurrentActivityFunctions": 10,
"maxConcurrentOrchestratorFunctions": 1
}
},
"durableTask": {
"HubName": "myHub",
"maxConcurrentActivityFunctions": 10,
"maxConcurrentOrchestratorFunctions": 1
},
"functionTimeout": "00:10:00"
}
尽管对指标进行了严格的评估,但经过大量的代码优化后,现在仍然存在问题。
答案 0 :(得分:2)
当您为Func使用消费计划时,可能会发生这种情况。这意味着在一段时间的感染后,天蓝色将使您的Func暂停,并且在系统中引发新事件或请求时,它将重新激活您的功能。 要解决此问题,您可以执行以下操作:
您可以在this文章
中阅读更多详细信息答案 1 :(得分:1)
您最有可能遇到this issue。
该问题现已解决,但是如果您受到影响,则在解决此问题之后,需要显式同步触发器。为此,请转到门户中的Function App,然后在树中单击Function App名称旁边的小刷新图标。您只需要执行一次。
然后您可以离开门户,它应该保持愉快的运行状态。