Стратегия повтора с экспоненциальным тайм-аутомC#

Место общения программистов C#
Ответить
Anonymous
 Стратегия повтора с экспоненциальным тайм-аутом

Сообщение Anonymous »

Я использую Polly для повторных HTTP-запросов. Следующий код работает нормально:

Код: Выделить всё

IAsyncPolicy waitTimeout = Policy.TimeoutAsync(TimeSpan.FromSeconds(5));

// Retry policy for transient errors
IAsyncPolicy retry = HttpPolicyExtensions.HandleTransientHttpError()
.Or()
.Or()
.OrResult(msg => msg.StatusCode == System.Net.HttpStatusCode.ServiceUnavailable)
.OrResult(msg => msg.StatusCode == System.Net.HttpStatusCode.InternalServerError)
.WaitAndRetryAsync(12, _ => TimeSpan.FromSeconds(10));

// Register the HTTP client with the Polly policies
builder.Services.AddHttpClient(
"ApiClient",
client => {client.Timeout = TimeSpan.FromSeconds(230); })
.AddHeaderPropagation()
.AddPolicyHandler(Policy.WrapAsync(retry, waitTimeout));
Время до следующей повторной попытки составляет 10 секунд, а время ожидания для каждого запроса в рамках повторной попытки — 5 секунд.
Проблема в том, что служба API может отвечать медленно. Я хотел бы иметь экспоненциальный тайм-аут для каждого запроса в течение повтора (а не времени задержки)

Подробнее здесь: https://stackoverflow.com/questions/792 ... al-timeout
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»