Configuración
Define schedules cron directamente en elconfig de tu función. No necesitas configuración externa.
index.ts
Prueba local
Inicia el servidor conjelou functions dev. Puedes enviar una petición HTTP a la función, pero el guard isCron la rechazará porque no es un trigger cron real:
No puedes simular un trigger cron real desde curl — la plataforma inyecta
ctx.isCron y la firma criptográfica automáticamente. Para probar la lógica del cron, usa createMockContext({ isCron: true }) en tus tests.Sintaxis
Cada schedule tiene dos campos:Formato de expresión
Ejemplos comunes
Zonas horarias
Usa cualquier zona IANA válida:Name y botId
Usaname para identificar cada schedule y botId para hidratar ctx.bot con un bot específico:
Guard isCron
Tu función puede recibir tanto peticiones HTTP como disparos cron. Usa ctx.isCron para distinguirlos:
Cómo funciona
- Defines los schedules en
config.cron - Al ejecutar
jelou functions deploy, la plataforma lee tu configuración y crea los schedules - Cuando un schedule se dispara, tu función recibe una petición con
ctx.isCron === trueyctx.trigger.croncon la expresión que lo activó - La verificación de firma criptográfica previene invocaciones no autorizadas
Límites
- Máximo 10 schedules cron por función
- Exceder este límite lanza un error en tiempo de definición
Gestión
Los schedules son declarativos — se definen en el código y se sincronizan en cada despliegue. Para modificar un schedule, cambiaconfig.cron en tu código y vuelve a desplegar.
Para ver los schedules activos:
Multi-tool cron
Cuando usasapp(), cada tool puede tener sus propios schedules cron independientes. Las peticiones cron se envían a la ruta específica de cada tool.
Logs de ejecución
Consulta el historial de ejecuciones cron:DELIVERED, ERROR, RETRY, RETRY_SCHEDULED, FAILED.
Problemas comunes
- Cron no se dispara
- Lógica cron se ejecuta por HTTP
Los schedules cron se sincronizan al hacer deploy. Si cambiaste la expresión cron, necesitas redesplegar:Verifica que el schedule esté activo:Si la columna
Enabled muestra no, revisa que la expresión cron sea válida.