2012-07-24 12 views
15

Así que ahora mismo tengo una implementación de retraso_trabajo que funciona perfectamente en mi entorno de desarrollo local. Para iniciar el trabajador en mi máquina, acabo de ejecutar rake jobs:work y funciona perfectamente.Ejecutando trabajador con trabajo de retraso en Heroku?

Para obtener el trabajo de retraso en heroku, he estado usando prácticamente el mismo comando: heroku run rake jobs:work. Esta solución funciona, sin que tenga que pagarle nada a Heroku por los costos del trabajador, pero tengo que mantener abierta la ventana de solicitud de comando o, de lo contrario, el trabajador con demora en el trabajo se detiene cuando la cierro. ¿Existe un comando para mantener trabajando de forma permanente a este trabajador con retardo de trabajo incluso cuando cierro la ventana de comandos? ¿O hay otra forma mejor de hacerlo?

Respuesta

9

Añadir

worker: rake jobs:work 

a su Procfile.

EDIT:

Incluso si se ejecuta desde la consola que 'comprar' banco de pruebas trabajador, pero Heroku tiene por segundo biling. Entonces, no paga porque tiene 750 horas gratis, y el mes en el peor de los casos tiene 744 horas, por lo que tiene 6 horas gratis para sus dinas adicionales, tareas del programador, etc.

+2

La documentación está aquí: https://devcenter.heroku.com/articles/delayed-job – zsquare

+5

Incluso si la ejecuta desde su consola, 'compra' trabajador dyno pero Heroku tiene por segundo bilingüe, así que no pagas porque tienes 750 horas gratis, y el mes en el peor de los casos tiene 744 horas, por lo que tienes 6 horas gratis para tus dinas adicionales, tareas del programador y así o norte. – Hauleth

13

Recomiendo el workless gem para ejecutar trabajos demorados en heroku. Utilizo esto ahora - funciona perfectamente para mí, sin problemas y sin costo.

También he usado hirefireapp, que proporciona un grado de control mucho más fino en los trabajadores de escalado. Esto cuesta, pero cuesta menos que un solo trabajador heroku (más de un mes). No uso esto ahora, pero lo he usado, y funcionó muy bien.

+0

Instalé sin trabajo y configuré las variables heroku. ¿Qué debería hacer ahora? No parece estar funcionando. –

+0

¿Agregaste la configuración (suponiendo que estés en cedro)? config.after_initialize hacer retardada :: = Job.scaler: heroku_cedar final –

+0

@DamonMannion 5 para usted en esta respuesta – Kashiftufail

0

Usar la consola heroku para hacer que los trabajadores entren en los trabajos solo creará crear un banco de pruebas temporal para el trabajo. Para mantener los trabajos en ejecución sin cli, debe colocar el comando en el archivo de proceso como lo sugirió @Lucaksz.

Después de la implementación, también es necesario para escalar la formación de banco de pruebas, como heroku necesita saber cuántos banco de pruebas se debe poner en el tipo de proceso de esta manera: heroku ps: escala trabajador = 1

Más detalles puede leerse aquí https://devcenter.heroku.com/articles/scaling

Cuestiones relacionadas