2010-04-10 16 views
21

He visto que Heroku cobra $ 15/mes para ejecutar trabajos retrasados, y $ 3/mes para ejecutar tareas de cron a diario. ¿Es posible omitirlo por completo y ejecutar mis propias tareas cron manualmente? ¿O están de alguna manera entendiendo que estoy ejecutando tareas cron?Ejecutando tareas de cron en Heroku

Respuesta

21

No estoy del todo seguro de lo que quiere decir con "ejecutar mis propias tareas de cron manualmente". Para cron específicamente, necesita acceso a crontab, que pueden controlar, ya que son sus servidores. Si tiene otra forma de hacerlo, probablemente estaría bien, pero tenga en cuenta que su aplicación no está vinculada a un servidor específico cuando se ejecuta bajo Heroku, y que el servidor cambiará de ejecuciones a.

Además, a menos que lo hayan cambiado desde la última vez que lo verifiqué, puede ejecutar tareas diarias de cron de forma gratuita, pero cada hora cuesta $ 3/mes.

EDIT: Sí, los crones diarios son gratuitos. Ver http://addons.heroku.com/.

+9

Ahora existe el programador complemento: http://addons.heroku.com/scheduler que es gratis. - El complemento del programador ejecutará cualquier cantidad de comandos en su aplicación, ya sea cada 10 minutos, cada hora o cada día. –

+5

El complemento es gratuito, pero aún se le cobrará por las horas acumuladas por el proceso único que se inicia para el cron. –

+0

@EnricoCarlesso, dice "total - 20 veces o 20 veces por día". ¿Significa que puedo ejecutarlo solo 20 veces al mes de forma gratuita? ¿Entonces no hay forma de correr 1 vez cada día gratis porque es 30 veces? –

10

Si instala el Heroku gem en su ordenador, a continuación, puede ejecutar sus tareas cron manualmente de la siguiente manera:

$ heroku rake cron 
(in /disk1/home/slugs/xxxxxx_aa515b2_6c4f/mnt) 
Running cron at 2010/04/25 10:28:54... 

Esto ejecutará el mismo código como de Heroku diaria/cron cada hora complemento lo hace; es decir, para que esto funcione, la aplicación debe tener un Rakefile con una tarea cron, por ejemplo:

desc "Runs cron maintenance tasks." 
task :cron do 
    puts "Running cron at #{Time.now.strftime('%Y/%m/%d %H:%M:%S')}..." 
    # TODO: your cron code goes here 
end 

Ahora, sólo tiene que añadir el comando heroku rake cron a un crontab en cualquier servidor Unix de los suyos, o incluso directamente a crontab de su computadora personal si está ejecutando Linux o Mac OS X, y puede programar trabajos cron para su aplicación Heroku como lo desee y sin que le cobren por ello.

+0

Parece que limitan la velocidad de esto para evitar el abuso. Ten cuidado No hace falta decir que probablemente no deberías usar esto para una máquina de producción ... :) – avocade

+0

avocada, eso es bueno saberlo. ¿Tiene un enlace a más información sobre la limitación de velocidad? –

+0

Tal vez los tiempos han cambiado desde 2010, pero no veo por qué lo limitarían. Cuando inicias una tarea de rake, estás pagando por ese tiempo. Inicie la tarea de rake 1000 veces y pague 1000 * taskduration. – danneu

4

Sí, he utilizado con éxito una tarea programada en mi servidor local que ejecuta esencialmente

$ heroku rake <rake task> 

a cualquier intervalos he requerido. He usado tanto en pilas de álamo temblón como de bambú.

+0

Cheapskate: PPP – mxcl

0

También puede instalar una gema como rufus-scheduler si está ejecutando una aplicación de rieles y configurar la programación de esa manera. No sé si esto es una mala práctica por algún motivo, pero es lo que hago con mi aplicación, y parece funcionar bien.

-5

Si desea tener trabajos programados también puede usar http://guardiano.getpeople.in que es un servicio gratuito (para 10 trabajos) para la programación de trabajos.

Solo necesita configurar un punto final HTTP en su aplicación para recibir notificaciones de eventos en POST o GET y también puede establecer algunos parámetros adicionales para evitar acciones no autorizadas.

Así que establece un trabajo en Guardiano que calificará http://yourapp.com/youraction y dejará "minutos" en blanco si desea que la acción se ejecute una vez en el futuro o establecer los minutos a los que desea ejecutar su acción cada X minutos. De esta forma, solo tienes que crear tu endpoint para tu aplicación y cuando se llama a este EP ejecutas algo.

Así que su aplicación puede dormir y no necesita gastar dinero y tiempo en la creación de trabajos y tener cuidado de que funcionen correctamente.

En mi humilde opinión, si necesita algo rápido para un MVP o necesita configurar una gran cantidad de puestos de trabajo para diferentes aplicaciones que un servicio gratuito como el que realmente puede externalizar cronjobs es bastante bueno.

No era aslo un Heroku Addon llama temporizar a hacer eso, pero no estoy seguro todavía está vivo y trabajando

+0

El enlace está roto. – chrishasbrouck

Cuestiones relacionadas