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:| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
expression | string | Sí | Cron estándar de 5 campos |
timezone | string | No | Zona horaria IANA. Default: UTC. |
name | string | No | Label identificativo del schedule. Max 64 caracteres. |
botId | string | No | ID del bot para hidratar ctx.bot. Max 128 caracteres. |
Formato de expresión
Ejemplos comunes
| Expresión | Descripción |
|---|---|
0 9 * * * | Todos los días a las 9:00 AM |
0 9 * * 1-5 | Lunes a viernes a las 9:00 AM |
*/30 * * * * | Cada 30 minutos |
0 0 1 * * | Primer día de cada mes a medianoche |
0 */2 * * * | Cada 2 horas |
30 14 * * 3 | Miércoles a las 2:30 PM |
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.