gpt4 book ai didi

c# - Cosmos DB 中的重试策略

转载 作者:行者123 更新时间:2023-11-30 12:39:21 26 4
gpt4 key购买 nike

我想了解如何最好地为 cosmos db (documentdb) 实现重试/退避策略。我知道 SDK 中内置了一些默认的重试机制,我可以在连接策略中更改它们,如下所示:

RetryOptions = new RetryOptions() { MaxRetryAttemptsOnThrottledRequests = 3, MaxRetryWaitTimeInSeconds = 60 }

但是,我不确定这如何影响我应该如何进行异常管理。

目前我正在执行以下操作:

GetAsync<T>(Uri, Id) {

try {

ResourceResponse<Document> response = await client.ReadDocumentAsync(URiFactory.CreateDocumentUri(uri), new RequestOptions { PartitionKey = new PartitonKey(convert.ToInt64(id)) }).ConfigureAwait(false);

}
catch(DocumentClientException ex) {
if(ex.StatusCode == (HttpStatusCode)TooManyRequests) {
await Task.Run(async () =>
{
await Task.Delay(ex.RetryAfter);
return await GetAsync<T>(Uri, Id).ConfigureAwait(false);
}
}
}
}

我需要重试吗?如果我捕获异常,是否会停止默认的重试尝试?另外,默认的重试 try catch 是什么?也就是说,它只是 429 吗?如果是这样,我需要手动处理错误代码 449 吗?

最佳答案

自定义RetryOptions仅用于处理限制(429错误代码)。请参阅https://learn.microsoft.com/en-us/azure/cosmos-db/performance-tips#429更多细节。

关于异常部分:只有在异常情况下所有重试次数耗尽后,API 才会退出。

By default, the DocumentClientException with status code 429 is returned after a cumulative wait time of 30 seconds if the request continues to operate above the request rate. This occurs even when the current retry count is less than the max retry count, be it the default of 9 or a user-defined value.

关于c# - Cosmos DB 中的重试策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46792502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com