我可以信任 Azure Blob RetryPolicy 吗?为什么我在 fiddler 中找不到这些重试请求
Can I trust Azure Blob RetryPolicy? Why I cannot find these retry requests in fiddler
我试图从一个空的 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();
The question is I see only 1 call for this file in fiddler, instead of
3 (as I specified in the RetryPolicy)
这是预期的行为,因为默认重试策略(线性、指数等)不会重试所有操作。 重试策略用于处理 transient
个错误。您提到您收到 404(未找到)错误,这不是可重试的操作,因为它不是暂时性错误。通常状态代码为 500+ 的错误在默认情况下是可重试的。
但是,您可以创建自定义重试策略并使任何错误代码都可重试。我写了一篇关于重试策略的博客 post 很久以前,我在那里写了一些代码来创建自定义重试策略。您可以创建一个将 404 错误视为暂时错误的自定义重试策略,然后您应该会看到存储客户端库正在重试您的操作。您可以在此处阅读 post:http://gauravmantri.com/2012/12/30/storage-client-library-2-0-implementing-retry-policies/.
我试图从一个空的 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();
The question is I see only 1 call for this file in fiddler, instead of 3 (as I specified in the RetryPolicy)
这是预期的行为,因为默认重试策略(线性、指数等)不会重试所有操作。 重试策略用于处理 transient
个错误。您提到您收到 404(未找到)错误,这不是可重试的操作,因为它不是暂时性错误。通常状态代码为 500+ 的错误在默认情况下是可重试的。
但是,您可以创建自定义重试策略并使任何错误代码都可重试。我写了一篇关于重试策略的博客 post 很久以前,我在那里写了一些代码来创建自定义重试策略。您可以创建一个将 404 错误视为暂时错误的自定义重试策略,然后您应该会看到存储客户端库正在重试您的操作。您可以在此处阅读 post:http://gauravmantri.com/2012/12/30/storage-client-library-2-0-implementing-retry-policies/.