Политика тайм-аута Polly не активированаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Политика тайм-аута Polly не активирована

Сообщение Anonymous »


Я пытаюсь запустить политику тайм-аута Polly, но она не работает, но когда я объединяю ее с политикой повтора, она работает нормально. Политики определены следующим образом: (Отказ от ответственности: это чистый тестовый код, не обращайте внимания на запахи кода)

var httpRetryPolicy = Policy.Handle() .OrResult(r => !r.IsSuccessStatusCode) .WaitAndRetryAsync( 5, retryAttempt => TimeSpan.FromSeconds(1), (_, _, retryAttempt, _) => Debug.WriteLine($"Повторная попытка ({retryAttempt})") ); var timeoutPolicy = Policy.TimeoutAsync( 4, TimeoutStrategy.Optimistic, (_, _, _, _) => { Debug.WriteLine("Тайм-аут"); вернуть Задача.ЗавершеннаяЗадача; } ); Конечная точка для теста политики/задержки в PollyTestController:

[HttpGet("{policyKey}/{delay}")] общедоступная асинхронная задача RunPolicyTest (строка policyKey, int задержка) { Политика AsyncPolicyWrap = null; если (policyKey == "Т") политика = Policy.WrapAsync(timeoutPolicy, Policy.NoOpAsync())); иначе if(policyKey == "TR") политика = Policy.WrapAsync(timeoutPolicy, httpRetryPolicy)); HttpClient httpClient = новый HttpClient(); var url = $"http://localhost:5000/test/{delay}"; пытаться { вар ответ = ждут policy.ExecuteAsync(() => httpClient.GetAsync(url)); return Ok(ожидайте ответа.Content.ReadAsStringAsync()); } поймать (Исключение ex) { вернуть BadRequest(ex.Message); } } И конечная точка теста в TestController:

[HttpGet("{delay}")] public IActionResult GetWithDelay (интервал задержки) { if (delay == 10) return NotFound("Не найден"); Thread.Sleep(задержка*1000); вернуть ОК("Успех"); } Сценарий 1 — вызов http://localhost:5000/pollytest/T/6 При этом будет выбрана политика "T" (тайм-аут) для выполнения вызова http://localhost:5000/test/6. Из приведенного выше кода ясно, что ответ будет задержан на 6 секунд, а поскольку таймаут в политике равен 4 секундам, должно быть выброшено TimeoutRejectedException. Но этого не происходит: запрос зависает ровно на 6 секунд, прежде чем вернуться с ответом «Успех». В окне вывода ничего не печатается.
Сценарий 2 — вызов http://localhost:5000/pollytest/TR/10
При этом будет выбрана политика "TR" (тайм-аут вокруг повторной попытки) для выполнения вызова http://localhost:5000/test/10. Поскольку для задержки установлено значение 10, конечная точка вернет код 404, поэтому политика повторных попыток будет выполнять попытку 5 раз с задержкой в ​​1 секунду между каждой попыткой. Но на этот раз политика тайм-аута вступает в силу после четвертой попытки, пятая попытка никогда не происходит, в окне вывода отображается:

Повторная попытка (1) Повторная попытка (2) Повторная попытка (3) Повторная попытка (4) Тайм-аут и ответ: «Делегат, выполненный асинхронно через TimeoutPolicy, не завершился в течение тайм-аута».

Что мне здесь не хватает? Почему сценарий 1 не активирует политику тайм-аута?
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Политика тайм-аута Polly не активирована
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Политика тайм-аута Polly не активирована
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Получение ошибки тайм-аута — увеличьте значение тайм-аута отправки при привязке.
    Anonymous » » в форуме C#
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous
  • Получение ошибки тайм-аута — увеличьте значение тайм-аута отправки при привязке.
    Anonymous » » в форуме C#
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Автоматический выключатель Polly Http отключается только при исключении тайм-аута
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

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