检测 azure 函数超时以将消息重新路由到应用服务计划

Pie*_*net 6 c# azure-functions

我有一个 Azure 功能可以解压缩消费计划中的档案。其中一些恰好需要 10 多分钟才能解压并且可能会超时。我正在考虑制定一个单独的应用程序服务计划,以便在消费计划超时时重新路由提取。

你会怎么做?函数中的计时器?捕获超时异常?你有更好的建议吗?

谢谢

Pie*_*net 7

对于那些感兴趣的人,我最终将自己的超时(比 Azure 早几秒)添加到提取函数中,然后重新路由到由服务应用程序计划处理的另一个队列,而不是超时。

代码 :

using (var timeoutCts = new CancellationTokenSource())
{
    try
    {
        // task completed within timeout
        timeoutCts.CancelAfter(590000);
        var counter = await ExtractArchiveAsync(archiveFullName, myBlob, timeoutCts.Token);
        log.Info($"Extracted : { counter.GetCurrentCount() }");
    }
    catch (OperationCanceledException)
    {
        // timeout logic
        log.Info($"Function timedout, redirected to long queue");
        var queue = StorageService.GetCloudQueueReference("ArchiveToExtractQueueTimedOut");
        await queue.AddMessageAsync(new CloudQueueMessage(archiveFullName));
    }
}
Run Code Online (Sandbox Code Playgroud)