Sobre el proyecto
Este repositorio proporciona un mecanismo de mantenimiento activo para un servicio web gratuito de Render. Combina un flujo de trabajo de GitHub Actions con un pequeño script de Node.js que envía solicitudes HTTP GET periódicas a una URL de destino configurada, para que el servicio no se suspenda por inactividad.
Problema abordado: el programador gratuito de GitHub Actions puede retrasar intervalos cron cortos, como cada 5 minutos, cuando sus servidores están ocupados, dejando huecos entre ejecuciones. Los servicios del plan gratuito de Render se suspenden después de aproximadamente 15 minutos sin tráfico, por lo que los pings perdidos pueden provocar arranques en frío.
Enfoque descrito en el README:
- Sesión activa de 14 minutos: cada trabajo de GitHub Actions se ejecuta durante unos 14 minutos y envía un ping cada 4 minutos (a los 0, 4, 8 y 12 minutos).
- Múltiples desencadenadores cron: se utilizan programaciones como */10 * * * * y 5,15,25,35,45,55 * * * * para que sigan iniciándose nuevas sesiones de ejecutor.
- El objetivo indicado es una cobertura continua, ya que los pings cada 4 minutos dentro de una ventana activa de 14 minutos se mantienen por debajo del umbral de inactividad de 15 minutos.
Características:
- API nativas de Node.js 22: utiliza fetch() integrada y node:timers/promises, sin dependencias npm externas.
- Lógica de reintento: reintenta hasta 3 veces con un retraso de 10 segundos ante errores de red o respuestas que no son 2xx.
- Salida de consola: registra marcas de tiempo ISO UTC, códigos de estado HTTP, tiempos de respuesta en milisegundos, resultados de éxito o error y recuentos de ciclos de sesión.
- Ejecución manual: admite workflow_dispatch para ejecuciones inmediatas.
Configuración: la URL de destino se define en la parte superior de ping.js como TARGET_URL, y actualmente apunta a un endpoint alojado en Render. Cambiar el endpoint requiere editar esa constante y enviar el cambio.
Despliegue: el README indica a los usuarios que confirmen y envíen los archivos actualizados a la rama principal, después de lo cual GitHub Actions inicia la sesión de ping activa.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.