我可以信任 Azure Blob RetryPolicy 吗?为什么我在小提琴手中找到这些重试请求

本文关键字:小提琴手 请求 重试 Blob Azure 信任 RetryPolicy 为什么 我可以 | 更新日期: 2023-09-27 17:56:58

我尝试从空的 blob 容器下载文件,但如预期的那样得到了 404。问题是我在 fiddler 中只看到 1 次调用此文件,而不是 3 次(如我在 RetryPolicy 中指定的那样),我也注意到调用在 1 秒内完成,所以它绝对没有等待 10 秒再试一次......如何知道 Blob 客户端是否确实进行了重试?

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

我可以信任 Azure Blob RetryPolicy 吗?为什么我在小提琴手中找到这些重试请求

问题是我在小提琴手中只看到 1 个对这个文件的调用,而不是 3(如我在重试策略中指定的那样)

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

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