Azure Blob存储DownloadToStreamAsync在网络更改期间挂起
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Azure Blob存储DownloadToStreamAsync在网络更改期间挂起相关的知识,希望对你有一定的参考价值。
我在Microsoft.WindowsAzure.Storage v9.3.3和Microsoft.Azure.Storage.Blob v11.1.0 NuGet库中遇到了问题。特别是在下载大文件时。如果您在“ DownloadToStreamAsync”方法期间更改网络,则调用将挂起。我一直在查看处理文件lot的代码,该代码偶尔会挂起,并且一直在尝试缩小范围。我认为网络更改可能是触发Azure Blob存储库中某些故障的可靠方法。
有关此问题的更多信息;
- [拔下网络电缆时,我的计算机切换为WiFi,但请求永远不会恢复
- 如果我开始通过WiFi下载,然后插入网络电缆,则会发生相同的错误
- “ ServerTimeout”属性绝不会失败请求,也不会按照Documentation的要求进行操作>
- “ MaximumExecutionTime”属性的确使请求失败,但我们不想将自己限制在某个时间段内,尤其是因为我们正在处理大文件时
如果在通话期间更改网络,以下代码将在100%的时间内失败。
static void Main(string[] args) { try { CloudStorageAccount.TryParse("<Connection String>", out var storageAccount); var cloudBlobClient = storageAccount.CreateCloudBlobClient(); var container = cloudBlobClient.GetContainerReference("<Container Reference>"); var blobRef = container.GetBlockBlobReference("Large Text.txt"); Stream memoryStream = new MemoryStream(); BlobRequestOptions optionsWithRetryPolicy = new BlobRequestOptions() { ServerTimeout = TimeSpan.FromSeconds(5), RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(20), 4) }; blobRef.DownloadToStreamAsync(memoryStream, null, optionsWithRetryPolicy, null).GetAwaiter().GetResult(); Console.WriteLine("Completed"); } catch (Exception ex) { Console.WriteLine($"Exception: {ex.Message}"); } finally { Console.WriteLine("Finished"); } }
[我在Azure存储GitHub中找到了this active issue,但它似乎不活动。
使用此软件包时,我还可以采用其他方法来可靠,有效地下载blob或缺少的内容吗?
我在使用Microsoft.WindowsAzure.Storage v9.3.3和Microsoft.Azure.Storage.Blob v11.1.0 NuGet库时遇到问题。特别是在下载大文件时。如果您更改网络...
根据我的研究,除**MaximumExecutionTime**
之外,目前尚无此支持。最大执行时间是为单个API调用分配的时间。如果在所有REST请求,重试等过程中在API中花费的总时间超过该值,则客户端将超时。此值仅在客户端上跟踪,不会发送到服务。
感谢Mohit的建议。
以上是关于Azure Blob存储DownloadToStreamAsync在网络更改期间挂起的主要内容,如果未能解决你的问题,请参考以下文章
使用 azure-storage-blob 或 azure-storage 上传和删除 Azure 存储 Blob
仅从 Azure 存储 [Azure-Blob][REST] 中的 Blob 列表获取特定元数据
Azure 存储:Blob:Python:获取指示符是不是存在 Blob
请求令牌时如何在 Azure 存储 Blob 中为 REST 请求指定范围? [AZURE-BLOB][REST API]