2012-07-24 181 views
15

所以现在我有一个delayed_job的实现,它完全适用于我的本地开发环境。为了启动我的机器上的工作人员,我只运行rake jobs:work,它完美的工作。在Heroku上运行delayed_job worker?

为了让delayed_job在heroku上工作,我一直在使用几乎相同的命令:heroku run rake jobs:work。这个解决方案的工作原理是,我不必为Heroku支付任何工人费用,但是我必须保持我的命令提示符窗口打开,否则delayed_job工作人员在关闭它时停止。即使关闭命令窗口,是否有一个命令可以永久保留delayed_job工作人员的工作?或者还有另一种更好的方法来解决这个问题?

回答

9

添加

worker: rake jobs:work 

Procfile

编辑:

即使您从控制台运行它,你“买”工人赛道,但是Heroku的每秒碧玲。所以你不支付,因为你有750小时免费,月最坏情况下有744小时,所以你有额外的dynos,调度任务等免费6小时。

+2

该文档在这里:https://devcenter.heroku.com/articles/delayed-job – zsquare 2012-07-24 10:36:10

+5

即使你从你的控制台运行它,你'购买'工人动态,但Heroku每秒钟的biling,所以你不支付,因为你有750小时免费,月最糟糕的情况下有744小时,所以你有额外的dynos,调度任务免费6小时,所以o ñ。 – Hauleth 2012-07-25 09:59:35

13

我建议workless gem在heroku上运行延迟工作。我现在使用它 - 它对我来说完美无瑕,零成本,零成本。

我也使用hirefireapp,它对缩放工作者提供了更精细的控制度。这需要花费,但成本低于单个heroku工作人员(一个月以上)。我现在不使用它,但已经使用它,并且它工作得很好。

+0

我安装了无工作并配置了heroku变量。我现在应该怎么做?它似乎没有工作。 – 2012-07-25 04:49:43

+0

你添加了配置(假设你在雪松)? config.after_initialize做 延迟:: Job.scaler =:heroku_cedar 结束 – 2012-07-26 16:39:06

+0

@DamonMannion +5你这个答案 – Kashiftufail 2013-02-21 13:32:25

0

使用heroku控制台让工作人员进入工作只会创建一个临时的工作测试仪。为了保持作业在没有cli的情况下运行,您需要按照@Lucaksz的建议将该命令放入Procfile。

部署之后,还需要扩展到了极致形成,Heroku的需要知道有多少测功机应放置到工艺类型是这样的: Heroku的PS:规模工= 1个

更多细节可以在这里阅读https://devcenter.heroku.com/articles/scaling