Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

204
Visualizações
Comportamiento inesperado de Polly Bulkhead cuando se usa en ASP.NET Core

Esta es mi política de mamparo:

 BulkheadPolicy = Policy .BulkheadAsync(maxParallelization: 2, maxQueuingActions: 2, onBulkheadRejectedAsync: (context) => { Console.WriteLine("Rejected"); return Task.CompletedTask; });

Debería permitir solo 4 tareas simultáneas para ejecutar/esperar la ejecución.
Sin embargo, termino obteniendo 6 tareas que pueden ejecutarse a través de la política de mamparo.

Esta es la acción de mi controlador:

 [HttpGet("bulkhead")] public async Task<object> Bulkhead() { Console.WriteLine(DateTime.UtcNow); var bhCount = _policyManager.BulkheadPolicy.BulkheadAvailableCount; var queueCount = _policyManager.BulkheadPolicy.QueueAvailableCount; // The policy is used here await _policyManager.BulkheadPolicy.ExecuteAsync(async (context) => { await Task.Delay(10000); }, new Context()); return new { bhCount, queueCount }; }

En mi navegador, utilicé este script para simular 14 tareas simultáneas:

 for (var i = 0; i < 14; i++) { fetch('https://localhost:44313/api/Bulkheads/bulkhead') .then(result=>console.log(result)); }

que debería producir solo 4 200OK respuestas. Sin embargo, termino recibiendo 6 200OK respuestas. Hice la prueba muchas veces y obtuve el mismo resultado. ¿Alguien tiene una idea de por qué, dado que el mismo comportamiento funciona bien con una aplicación de consola? ¿Me perdí algo aquí? Muchas gracias.

ACTUALIZACIÓN 1 : Esta es mi interfaz IPolicyManager

 public interface IPolicyManager { AsyncBulkheadPolicy BulkheadPolicy { get; } } public class PolicyManager : IPolicyManager { public PolicyManager() { Init(); } public AsyncBulkheadPolicy BulkheadPolicy { get; private set; } private void Init() { BulkheadPolicy = Policy .BulkheadAsync(maxParallelization: 2, maxQueuingActions: 2, onBulkheadRejectedAsync: (context) => { Console.WriteLine("Rejected"); return Task.CompletedTask; }); } }

ACTUALIZACIÓN 2 : cuando envío una solicitud fija (URL fija), falla bastante lento, pero cuando agrego un argumento aleatorio en las solicitudes, el resultado es el esperado (falla rápidamente y solo pueden continuar 4 solicitudes).

 for (var i = 0; i < 14; i++) { fetch('https://localhost:44313/api/Bulkheads/bulkhead?count=' + i) .then(result=>console.log(result)); }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Resultó que el comportamiento del navegador no era el esperado. Escribí una aplicación de consola que hace la misma tarea y funciona bien: falla rápido y solo pueden continuar 4 solicitudes a la vez. Entonces puedo confirmar que esto no es un problema de Polly o ASP.NET Core. Tal vez se relacione con el mecanismo de almacenamiento en caché del navegador web (estoy usando Edge): https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda