Te damos el arreglo a este disgusto, al menos eso creemos. Si continuas con interrogantes puedes dejarlo en el apartado de comentarios, que sin dudas
Solución:
Utilizar el --cron
opción:
-c –cron
Por ejemplo:
pm2 start sendMail.js --cron "*/15 * * * *"
Pm2 ahora reiniciará el sendMail.js
guión en la hora, ya los 15, 30 y 45 minutos pasada la hora
Esto es lo que funcionó para mí, dividí el cron en un archivo diferente que se ejecuta en un proceso diferente porque quiero liberar recursos después de que el cron haya completado la ejecución.
ecosistema.config.js:
module.exports =
/**
* Application configuration section
* http://pm2.keymetrics.io/docs/usage/application-declaration/
*/
apps: [
// Main API Hosting
name: 'API',
script: 'bin/www',
env:
COMMON_VARIABLE: 'true'
,
instances: 1,
exec_mode: 'cluster',
watch: false,
autorestart: true
,
name: 'CRON',
script: "crons/cronjob.js",
instances: 1,
exec_mode: 'fork',
cron_restart: "0,30 * * * *",
watch: false,
autorestart: false
]
;
Las siguientes líneas son importantes en el ejecutable cron
cron_restart: "0,30 * * * *"
<- expresión cron
autorestart: false
<- importante porque de lo contrario pm2 reiniciará el cron inmediatamente después de completarlo
También asegúrese de que su instances
es 1, de lo contrario se ejecutarán varios procesos cron.
Advertencias clave:
Cada vez que reinicie pm2 all, el trabajo cron se ejecutará independientemente de la expresión cron. Si es crítico ejecutar solo en momentos específicos, agregue esta verificación adicional al comienzo del archivo cron
if (new Date().getHours() !== 0 )
console.log(`Current hours is $new Date().getHours(), not running.`)
process.exit(0);
Si usa el ecosistema PM2, en el archivo de configuración agregue la secuencia cron a script
param envolviéndolo con comillas simples. De alguna manera, las comillas dobles no funcionaron para mí.
module.exports =
apps : [
name : "Send-mail",
script : "./sendMail.js --cron '*/15 * * * *'",
watch : true
]
alternativamente (mi preferencia)
module.exports =
apps : [
name : "Send-mail",
script : "./sendMail.js",
cron_restart: "*/15 * * * *",
watch : true
]
Sección de Reseñas y Valoraciones
Nos puedes añadir valor a nuestra información añadiendo tu experiencia en las explicaciones.