feat(Worker): Implementa política de reintentos con Polly para resiliencia en la obtención de datos

This commit is contained in:
2025-07-03 12:11:08 -03:00
parent 1730c66d6a
commit 6479a5a040
5 changed files with 58 additions and 13 deletions

View File

@@ -48,7 +48,7 @@ namespace Mercados.Infrastructure.DataFetchers
await _cotizacionRepository.GuardarMuchosAsync(cotizaciones);
await UpdateSourceInfoAsync();
_logger.LogInformation("Fetch para {SourceName} completado exitosamente. Se guardaron {Count} registros.", SourceName, cotizaciones.Count);
return (true, $"Proceso completado. Se guardaron {cotizaciones.Count} registros.");
}
@@ -61,7 +61,8 @@ namespace Mercados.Infrastructure.DataFetchers
private async Task<string> GetHtmlContentAsync()
{
var client = _httpClientFactory.CreateClient();
// Pedimos el cliente HTTP con el nombre específico que tiene la política de Polly
var client = _httpClientFactory.CreateClient("MercadoAgroFetcher");
// Es importante simular un navegador para evitar bloqueos.
client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36");
@@ -142,7 +143,7 @@ namespace Mercados.Infrastructure.DataFetchers
await _fuenteDatoRepository.ActualizarAsync(fuente);
}
}
// --- Funciones de Ayuda para Parseo ---
private readonly CultureInfo _cultureInfo = new CultureInfo("es-AR");
private decimal ParseDecimal(string value)