Políticas de tiempo de espera y fallback
Limite las esperas y proporcione alternativas controladas.
Políticas de tiempo de espera y fallback es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.
Por qué son importantes los tiempos de espera
Una llamada que nunca devuelve una respuesta es peor que una que falla: mantiene ocupados hilos y conexiones. Una estrategia de tiempo de espera limita cuánto tiempo puede ejecutarse una operación antes de que Polly la cancele.
Añadir un tiempo de espera
Polly v8 proporciona AddTimeout. Cuando se supera el límite, lanza una TimeoutRejectedException y cancela el token subyacente.
using Polly.Timeout;
var pipeline = new ResiliencePipelineBuilder()
.AddTimeout(TimeSpan.FromSeconds(3))
.Build();Cancelación cooperativa
El tiempo de espera funciona cancelando el CancellationToken que se pasa a su devolución de llamada. Su código debe respetar ese token para que el tiempo de espera tenga efecto rápidamente.
await pipeline.ExecuteAsync(async token =>
{
// token is cancelled when the timeout fires
await httpClient.GetAsync(url, token);
});Reaccionar a los tiempos de espera
Use TimeoutStrategyOptions con una devolución de llamada OnTimeout para registrar información o emitir métricas cuando una operación se interrumpa.
new TimeoutStrategyOptions
{
Timeout = TimeSpan.FromSeconds(3),
OnTimeout = args =>
{
Console.WriteLine($"Timed out after {args.Timeout}");
return default;
}
};¿Qué es una alternativa?
Una alternativa proporciona un resultado sustituto cuando una operación falla, de modo que el usuario obtiene una experiencia degradada pero controlada en lugar de un error: datos almacenados en caché, un valor predeterminado o un mensaje amigable.
Añadir una estrategia de alternativa
AddFallback necesita un pipeline tipado. Debe definir qué errores se gestionarán y qué valor se devolverá en su lugar.
using Polly.Fallback;
var pipeline = new ResiliencePipelineBuilder<string>()
.AddFallback(new FallbackStrategyOptions<string>
{
ShouldHandle = new PredicateBuilder<string>()
.Handle<HttpRequestException>(),
FallbackAction = args =>
Outcome.FromResultAsValueTask("cached default")
})
.Build();Devolver datos almacenados en caché como alternativa
Un patrón habitual consiste en servir desde la caché el último valor válido conocido cuando falla la llamada activa, para mantener la aplicación receptiva.
FallbackAction = args =>
{
var cached = _cache.GetLastKnownGood();
return Outcome.FromResultAsValueTask(cached);
}Observar las alternativas
La devolución de llamada OnFallback se ejecuta cuando se utiliza la alternativa, lo que resulta ideal para registrar que se siguió una ruta degradada.
new FallbackStrategyOptions<string>
{
FallbackAction = args => Outcome.FromResultAsValueTask("default"),
OnFallback = args =>
{
Console.WriteLine("Fallback executed");
return default;
}
};Combinar tiempo de espera y alternativa
Combinarlos es muy eficaz: el tiempo de espera limita la espera y la alternativa proporciona un valor cuando se produce el tiempo de espera (o cualquier otro error gestionado), de modo que las llamadas nunca se quedan bloqueadas ni producen un error no controlado.
Elegir tiempos de espera adecuados
Establezca los tiempos de espera basándose en una latencia realista más un margen, no en valores arbitrariamente pequeños. Si son demasiado estrictos, fallarán llamadas saludables; si son demasiado amplios, perderán su propósito.
La alternativa es el último recurso
Coloque la alternativa como la estrategia más externa para que pueda capturar por igual los errores de los reintentos, los disyuntores y los tiempos de espera, garantizando que la llamada siempre reciba un resultado utilizable.
Comprobación rápida
Pruebe las estrategias de tiempo de espera y alternativa.
Resumen
Los tiempos de espera limitan la duración de una operación con AddTimeout, cancelan el token y lanzan TimeoutRejectedException (¡respete el token!). Las alternativas proporcionan resultados sustitutos mediante AddFallback con un FallbackAction, a menudo sirviendo datos almacenados en caché. Juntos mantienen la capacidad de respuesta de las aplicaciones: limitan la espera y después aplican una degradación controlada. Coloque la alternativa en el nivel más externo para que capture todos los errores gestionados.
Preguntas frecuentes
¿La lección «Políticas de tiempo de espera y fallback» es gratis?
Sí — el texto completo de «Políticas de tiempo de espera y fallback» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Políticas de tiempo de espera y fallback»?
Limite las esperas y proporcione alternativas controladas. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Políticas de tiempo de espera y fallback»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Políticas de reintento
- Patrón Circuit Breaker
- Políticas de tiempo de espera y fallback
- Pipelines de resiliencia