Pie*_*net 6 c# azure-functions
我有一个 Azure 功能可以解压缩消费计划中的档案。其中一些恰好需要 10 多分钟才能解压并且可能会超时。我正在考虑制定一个单独的应用程序服务计划,以便在消费计划超时时重新路由提取。
你会怎么做?函数中的计时器?捕获超时异常?你有更好的建议吗?
谢谢
对于那些感兴趣的人,我最终将自己的超时(比 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)
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |