Estoy desarrollando un servidor Nodejs que estoy subiendo a Heroku. El archivo tiene un trabajo Cron que debe ejecutarse cada 4 horas. Pero cuando me registro no pasa nada. Estoy usando la versión gratuita de Heroku y no parece que esté excediendo mi límite de horas gratuitas de Dyno.
El código en mi archivo Index.js se ve a continuación. Como puede ver en este ejemplo simple, solo quiero que la aplicación registre el tiempo cada 4 horas. También actualizo una variable que debe indicar la última actualización, que se puede usar para verificar el estado de las actualizaciones.
import express from 'express'; const app = express(); import cors from 'cors'; app.use(cors()); import cron from 'node-cron'; import dotenv from 'dotenv' dotenv.config() const port = process.env.PORT || 3050; var lasttime = ''; var task = cron.schedule("0 0 */4 * * *",() => { console.log("date: "+Date()); lasttime = Date(); }, { scheduled: true } ); app.get('/api_x', async (request, response) => { reply=lasttime; response.json({reply:reply}); });Esto funciona bien cuando lo ejecuto en mi computadora local. Cuando lo ejecuto en Heroku, registra el mensaje una vez, no actualiza la variable lasttime y luego no hace nada. Cuando reviso los registros de la aplicación en Heroku, se lee:
Unidling State changed from down to starting Starting process with command npm start webdesign@1.0.0 start /app node index.js listening at 10006 State changed from starting to up
¿Qué podría estar causando que mi trabajo Cron no se ejecute? (También he intentado usar setInterval, pero todavía no hay resultados).
En la versión gratuita de Heroku, el servidor duerme después de 30 minutos de inactividad; de lo contrario, siempre depende de las horas de dinamómetro libres mensuales restantes.
El plan Hobby Nunca duerme