在Heroku上运行delayed_job工作者?
所以现在我有一个delayed_job的实现,它完全适用于我的本地开发环境。 为了在我的机器上启动工作人员,我只是运行rake jobs:work
并且它完美地工作。
为了让delayed_job在heroku上工作,我一直在使用几乎相同的命令: heroku run rake jobs:work
。 这个解决方案可以工作,我不需要为Heroku支付任何工作成本,但是我必须保持命令提示符窗口打开,否则我关闭它时delayed_job工作程序会停止。 是否有命令永久保持这个delayed_job工作程序即使在我关闭命令窗口时也能工作? 或者还有另一种更好的方法吗?
加
worker: rake jobs:work
到您的Procfile
。
编辑:
即使你从你的控制台运行它,你也会“购买”工人dyno,但Heroku每秒钟都会被打包。 所以你不付钱,因为你有750小时的免费,而最坏的情况下有一个月有744小时,所以你可以免费获得6小时的额外动力,调度任务等等。
我推荐无用的gem在heroku上运行延迟的工作。 我现在使用它 – 它对我来说非常有效,零麻烦且零成本。
我还使用了hirefireapp ,它可以对扩展工作者进行更精细的控制。 这笔费用,但费用低于单个heroku工作人员(超过一个月)。 我现在不使用它,但已经使用它,并且它工作得非常好。
我还没有尝试过,但你可能会发现nohup
很有用。 即使您已关闭终端窗口,它也允许您的进程运行。 链接: http : //linux.101hacks.com/unix/nohup-command/
使用heroku控制台让工作人员进入工作岗位只会为工作创建一个临时的dyno。 要保持作业在没有cli的情况下运行,您需要将命令放入Procfile中,如@Lucaksz建议的那样。
部署之后,你还需要扩展dynoforms,因为heroku需要知道应该将多少dyno放到进程类型上,如下所示: heroku ps:scale worker = 1
更多细节可以在这里阅读https://devcenter.heroku.com/articles/scaling
- 如何在heroku上运行phantomjs?
- 奇怪的Heroku浮点精度错误(轨道上的ruby)
- 尽管在Heroku上使用Rails设置了新的参数组,但无法在RDS中存储UTF-8
- 使用外部SMTP在Heroku上发送电子邮件
- 将Rails应用程序部署到Heroku时出现语法错误:ExecJS :: RuntimeError:SyntaxError:意外字符
- 如何确保我在Heroku上托管的Ruby on Rails应用程序更新了我的GitHub仓库中的最新代码?
- Rails Checkout SSL heroku
- 是否可以从Heroku的私有gitlab主机安装gem
- 如何从我的Rack应用程序中删除“Server”HTTP响应标头