2011-10-19 34 views
1

我是否想过在heroku上每2小时运行后台进程的最有效方式(例如发送电子邮件/统计信息收集等)是使用cron,计划每隔两个小时,然后将物品放在delayed_jobs队列中(基于dj宝石),然后立即由heroku工作人员拾取它们?Cron和delayed_job--两者同时用于Heroku

此外,一旦应用程序正式投入生产,我是否认为具有成本效益的方法是让雇员启动一个工作人员执行工作,然后关闭它?

我应该考虑其他方法吗?我之前并没有做过这种延迟的工作 - 在开发前和基本生产测试之前,我已经把所有这些都基于heroku cron--但是在生产中,如果cron工作的负载增加,这种工作似乎不明智。

赞赏有价值的替代方法的任何指针!

+0

+1“for hirefire”。我以前没有听说过。你的想法使用cron + DJ似乎对我来说足够明智。我不确定你的意思是“加载cron作业”,因为它可能只是排队等待DJ任务。 – jdl

+0

当cron实际执行大任务时,我的意思是cron * now *上的负载,而不是将事情放在队列中。即我只是使用cron任务来激发类方法。真的,我应该只使用cron来推动队列。那有意义吗? – Dave

+1

是的,我想我们正在谈论同样的事情。 Cron应该加载队列(这应该是一个非常轻量级的事情)。 DJ工作应该完成繁重的工作。 – jdl

回答

2

如果您没有全职的工作组工作,Hirefire肯定是您的工作方式,否则您将为休眠工作人员付钱。

计时的另一种选择是在使用可用的run_at参数完成时,让延迟作业重新安排自身。工作人员然后将它做的时候(虽然我从来没有测试过这将适用于Hirefire,因为我认为他们只是看待作业计数)

这是一个非常好的方法总的来说,我会用。