この記事. 以下のコード。これは問題なく動作し、約 20 分間 (約 50 回の反復) 実行されます。ただし、この時間が経過するとスリープ状態になり、動作しなくなります。Azure portal に移動し、関数アプリをクリックして関数リストをクリックすると (つまり、クリックするだけで、設定を変更したり、何も停止/開始したりしません)、突然 "ウェイクアップ" し、問題なく続行します。ログにエラーや問題はありません。非アクティブな期間を示しているだけで、ログが再開されています。どこかに設定がありませんか?
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 の問題は解決されたように見えますが、機能を信頼できるものにするために、以下に示すように二重構成設定を行う必要がありました。
{
"version": "2.0",
"extensions": {
"durableTask": {
"HubName": "myHub",
"maxConcurrentActivityFunctions": 10,
"maxConcurrentOrchestratorFunctions": 1
}
},
"durableTask": {
"HubName": "myHub",
"maxConcurrentActivityFunctions": 10,
"maxConcurrentOrchestratorFunctions": 1
},
"functionTimeout": "00:10:00"
}
メトリクスはしっかりしているように見えますが、多くのコード最適化の後でもまだ問題があります。