Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测azure函数将消息重新路由到应用服务计划的超时_C#_Azure Functions - Fatal编程技术网

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

C# 检测azure函数将消息重新路由到应用服务计划的超时,c#,azure-functions,C#,Azure Functions,我有一个Azure函数在消费计划中解压档案。其中一些恰好需要10分钟以上才能解压,并且可能会超时。我正在考虑制定一个单独的应用程序服务计划,在消费计划超时时,我将重新安排提取路线 你会怎么做?函数中的计时器?捕获超时异常?你有更好的建议吗 感谢那些感兴趣的人,我结束了向提取函数添加自己的超时(比Azure one早几秒),然后重新路由到由服务应用程序计划处理的另一个队列,而不是不超时 代码: 如果您的应用程序功能切换到正常的应用程序服务计划(而不是消费计划),您将能够延长超时时间。在host.

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

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


感谢那些感兴趣的人,我结束了向提取函数添加自己的超时(比Azure one早几秒),然后重新路由到由服务应用程序计划处理的另一个队列,而不是不超时

代码:


如果您的应用程序功能切换到正常的应用程序服务计划(而不是消费计划),您将能够延长超时时间。在
host.json
文件中,可以像这样延长超时:{“functionTimeout”:“00:15:00”}。看这篇文章:我知道,这是我的计划,但不是所有的功能,我仍然希望/需要从消费计划提供的缩放中受益。这就是我只想重定向存档超时的原因。创建两个具有不同服务计划的功能应用是,但如何检测消费计划上的超时以将其传输到应用服务计划?如果可能的话,我需要一些代码来捕获超时异常(如果有),并将带有存档名称的消息排入队列,以便在service app one列出的队列中提取。
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));
    }
}