¿Hay una biblioteca de tareas programadas para node?js? [cerrado]


¿Hay alguna biblioteca tipo cron que me permita programar alguna función para que se ejecute en cierto momento (15:30 por ejemplo, no x horas a partir de ahora, etc.)? Si no existe este tipo de biblioteca, ¿cómo debería implementarse? ¿Debo configurar la devolución de llamada para que se llame cada segundo y verificar la hora y comenzar los trabajos programados para la hora o qué?

Author: JtR, 2010-09-24

11 answers

Node-cron hace justo lo que describí

 113
Author: JtR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-24 12:08:21

Node-schedule Un programador de tareas similar a cron y no similar a cron para Node.

 41
Author: Unitech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-25 15:01:59

Agenda es una programación de trabajos ligera para node. Esto te ayudará.

 29
Author: Fizer Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-03 07:15:02

Más Tarde.js es una biblioteca "scheduler" de JavaScript bastante buena. Puede ejecutarse en el nodo.js o en un navegador web.

 14
Author: XåpplI'-I0llwlg'I -,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-12 04:43:47

Estoy usando kue: https://github.com/learnboost/kue . Es bastante agradable.

Las características oficiales y mis comentarios:

  1. trabajos retrasados.
    • Si desea dejar que el trabajo se ejecute en un momento específico, calcule los milisegundos entre ese momento y ahora. Llama a Job.retraso (milisegundos) (El doc dice minutos, lo cual está mal.) No se olvide de añadir " puestos de trabajo.promote (); " cuando inicias trabajos.
  2. evento de trabajo y progreso pubsub.
    • Yo no entender.
  3. interfaz de usuario integrada rica.
    • Muy útil. Puede verificar el estado del trabajo (terminado, en ejecución, retrasado) en la interfaz de usuario integrada y no necesita escribir ningún código. Y puede eliminar registros antiguos en la interfaz de usuario.
  4. desplazamiento infinito
    • A veces no funciona. Tengo que refrescarme.
  5. Indicación de progreso de la interfaz de usuario
    • Bueno para los trabajos que consumen mucho tiempo.
  6. registro específico del trabajo
    • Porque se retrasan trabajos, debe registrar información útil en el trabajo y verificar más tarde a través de la interfaz de usuario.
  7. desarrollado por Redis
    • Muy útil. Al reiniciar el nodo.aplicación js, todos los registros de trabajo todavía están allí y los trabajos programados se ejecutarán también!
  8. reintentos opcionales
    • Agradable.
  9. capacidades de búsqueda de texto completo
    • Bien.
  10. API JSON RESTful
    • Suena bien, pero nunca uso se.

Editar:

  1. kue no es una biblioteca como cron.
  2. De forma predeterminada, kue no admite trabajos que se ejecuten repetidamente (por ejemplo, todos los domingos).
 11
Author: Vince Yuan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-03 15:55:21

Node-crontab le permite editar trabajos de cron del sistema desde el nodo.js. El uso de esta biblioteca le permitirá ejecutar programas incluso después de las terminaciones de su proceso principal. Descargo de responsabilidad: Soy el desarrollador.

 9
Author: Blago,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-29 16:12:05

Puedes usar timexe

Las ventajas son que es simple de usar, ligero, no tiene dependencias, tiene una sintaxis mejorada sobre cron, una resolución en milisegundos y funciona en el navegador.

Instalar:

npm install timexe

Uso:

var timexe = require('timexe');
var res = timexe("* * * 15 30", function(){ console.log("It's now 3:30 pm"); });

(Soy el autor)

 6
Author: Simon Rigét,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-20 07:57:21

Soy el auhor de node-runnr. Tiene un enfoque muy simple para crear empleo. También es muy fácil y claro declarar el tiempo y el intervalo. Por ejemplo, para ejecutar un trabajo cada 10min 20seg,

Runnr.addIntervalJob('10:20', function(){...}, 'myjob')

Para hacer un trabajo a las 10am y 3pm todos los días,

Runnr.addDailyJob(['10:0:0', '15:0:0'], function(){...}, 'myjob')

Es así de simple. Para más detalles: https://github.com/Saquib764/node-runnr

 2
Author: codedemon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-27 20:56:57

Tanto node-schedule como node-cron podemos usar para implementar schedulers basados en cron.

NOTA: para generar expresiones cron, puede usar este cron_maker

 1
Author: dush88c,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-30 08:27:39

Esto no será adecuado para todos, pero si su aplicación ya está configurada para tomar comandos a través de un socket, puede usar netcat para emitir comandos a través de cron.

echo 'mycommand' | nc -U /tmp/myapp.sock
 0
Author: Adria,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-05 19:27:28

Todas estas respuestas y nadie ha apuntado al paquete NPM más popular .. cron

Https://www.npmjs.com/package/cron

 0
Author: danday74,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-25 00:50:31