run off example node.js heroku scheduler

node.js - off - heroku worker



Uso del programador Heroku con Node.js (5)

Estoy confundido de que nadie lo haya intentado:

$ heroku run node yourScript.js

Así que pon esto en Heroku Scheduler

node yourScript.js

Trabajó para mi.

Literalmente, no hay ningún tutorial sobre el uso de Heroku Scheduler con Node.js. Supongamos que tengo una función llamada sayHello () y me gustaría ejecutarla cada 10 minutos. ¿Cómo puedo usarlo en el controlador? En ruby ​​escribes rake nombre_función (); sin embargo, no hay explicación para Node. ¿Puedo escribir ''/ sayHello'' o debo hacer una configuración extra?


La respuesta de Christophe funcionó para mí hasta que necesité pasar un parámetro al guión, en cuyo momento falló. El problema es que ese node no debe especificarse en la tarea. Aquí es cómo exactamente para que funcione:

  1. En su Procfile, defina un tipo de proceso para su script. Vea a continuación un archivo de proceso típico con un proceso web y, para ejecutar "scheduled_job.js", un segundo tipo de proceso llamado imaginativamente "worker".

    web: node app.js worker: node scheduled_job.js

  2. En la columna Tarea del planificador Heroku, simplemente ingrese el nombre del tipo de proceso ("trabajador" en este ejemplo) con o sin parámetros. No ingrese ''nodo'' antes . Heroku muestra un signo de dólar delante, así que los ejemplos de una configuración válida serían $ worker (ejecutado sin argumentos) o $ worker 123 abc (para ejecutar scheduled_job.js con argumentos "123" y "abc")


Los siguientes pasos funcionan en mi situación.

  1. En la carpeta raíz, agregue el archivo worker.js .
  2. En worker.js. Escribe una función simple, como arriba. function sayHello() { console.log(''Hello''); } sayHello();
  3. Vaya a los complementos de Heroku Scheduler. Haga clic en ''agregar nuevo trabajo'' y escriba ''trabajador'' en el campo. Luego, configure el intervalo de tiempo y haga clic en guardar.

Aquí hay algo que debería notar

  1. Después de la actualización funciona la configuración. Si usa el ejemplo anterior, puede usar heroku run node worker.js para comprobar si funciona. Debería mostrarse ''Hola'' en su terminal.
  2. Uso el iniciador express-babel para mi proyecto node.js.

Un mejor enfoque es definir su archivo de programación llamado por ejemplo worker.js con el siguiente contenido:

function sayHello() { console.log(''Hello''); } sayHello();

y luego, en el cronograma heroku, simplemente escribes el node worker como lo defines en el Procfile y eso es todo!


Crea el archivo <project_root>/bin/say_hello :

#! /app/bin/node function sayHello() { console.log(''Hello''); } sayHello(); process.exit();

Implementar en Heroku y probarlo con $ heroku run say_hello luego agregarlo al programador con el nombre de la tarea say_hello .

Explicación

Tome say_hello.js como un ejemplo de un script Node.js que normalmente ejecutaría usando $ node say_hello.js .

Conviértalo en un script por

  1. eliminando el final de .js
  2. insertando el ''shebang'' en la parte superior: #! /app/bin/node #! /app/bin/node [1] [2]
  3. moviéndolo al directorio bin [3]

[1] Lea sobre el shebang en Wikipedia .
[2] El ejecutable del node está instalado en la app/bin/node en Heroku. Puedes verificarlo $ heroku run bash sesión en Bash en Heroku con $ heroku run bash luego preguntando $ which node .
[3] Heroku requiere que los scripts se coloquen en el directorio bin . Consulte Definir tareas en el Centro de desarrollo de Heroku.

Acepto que la documentación de Heroku para tareas de programación no está muy clara para nada más que los scripts de Ruby. Me las arreglé para resolverlo después de un poco de prueba y error. Espero que esto ayude.