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