16

所以现在我有一个延迟作业的实现,它可以在我的本地开发环境中完美运行。为了在我的机器上启动worker,我只是运行rake jobs:work它并且它运行良好。

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

4

4 回答 4

13

我推荐使用无用 gem在 heroku 上运行延迟的工作。我现在使用它 - 它非常适合我,零麻烦和零成本。

我还使用了hirefireapp,它可以更好地控制扩展工人。这需要花费,但成本低于单个 heroku 工人(超过一个月)。我现在不用这个,但是用过,效果很好。

于 2012-07-25T04:42:50.047 回答
9

添加

worker: rake jobs:work

到你的Procfile.

编辑:

即使您从控制台运行它,您也可以“购买”工人测功机,但 Heroku 具有每秒计费。所以你不用付钱,因为你有 750 小时的免费时间,而在最坏的情况下,一个月有 744 小时,所以你有 6 小时的免费时间用于额外的测功机、调度程序任务等。

于 2012-07-24T10:31:40.440 回答
1

我还没有亲自尝试过,但你可能会觉得nohup有用。即使您关闭了终端窗口,它也允许您的进程运行。链接: http: //linux.101hacks.com/unix/nohup-command/

于 2012-07-24T10:29:02.780 回答
0

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

部署后,您还需要缩放 dyno 形成,因为 heroku 需要知道应该将多少 dyno 放入进程类型,如下所示: heroku ps:scale worker=1

可以在此处阅读更多详细信息https://devcenter.heroku.com/articles/scaling

于 2016-09-21T02:01:05.583 回答