我可以信任Azure Blob RetryPolicy吗?为什么我在fiddler中找不到这些重试请求

时间:2016-07-15 00:51:41

标签: c# azure azure-storage-blobs retrypolicy

我尝试从空的blob容器中下载文件,并按预期得到404。问题是我在fiddler中只看到1个调用此文件,而不是3个(正如我在RetryPolicy中指定的那样),我也注意到调用在1秒内完成,所以它肯定没有等待10秒才重新尝试。 .. 我怎么知道BlobClient是否真的重试了?

var blobClient = this.storageAccount.CreateCloudBlobClient(); blobClient.DefaultRequestOptions.RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(10), 3); var anchorString = await cloudBlobContainer.GetBlockBlobReference(ARGO_ANCHOR_VERSION_FILE).DownloadTextAsync();

1 个答案:

答案 0 :(得分:1)

  

问题是我在fiddler中只看到1个调用此文件,而不是   3(正如我在RetryPolicy中指定的那样)

这是预期的行为,因为默认重试策略(线性,指数等)不会重试所有操作。 重试政策用于处理transient错误。您提到您有404(未找到)错误,这不是可重试的操作,因为它不是瞬态错误。通常,状态代码为500+的错误在默认情况下是可以重试的。

但是,您可以创建自定义重试策略并使任何错误代码可重试。我在很长一段时间内写了一篇关于重试策略的博客文章,并在那里写了一些用于创建自定义重试策略的代码。您可以创建自定义重试策略,将404错误视为转换错误,然后您应该看到存储客户端库重试您的操作。您可以在此处阅读该帖子:http://gauravmantri.com/2012/12/30/storage-client-library-2-0-implementing-retry-policies/