我有一个关于Heroku运行延迟工作的应用程序。但是,目前我必须使用terminal命令启动作业队列:
heroku rake jobs:work
...但这意味着当我关闭终端时,应用程序的延迟作业队列也会关闭。
有什么方法可以让Heroku在应用程序启动时始终在后台启动和运行延迟工作?无需每次都运行命令而没有直接链接到我的终端shell?
非常感谢。
编辑:
它在竹堆上。提升工作人员或运行佣金工作:工作,延迟的工作运行一段时间,但随后队列似乎停止处理。延迟作业队列中没有错误,工作人员只是停止处理作业。它必须每5或10分钟明确重启一次。
答案 0 :(得分:4)
在Heroku的Aspen或Bamboo堆栈上,使用heroku workers 1
在Cedar堆栈上,您将此行放在Procfile中:
worker: bundle exec rake jobs:work
然后执行heroku scale worker=1
。
答案 1 :(得分:2)
我们使用workless gem和我们的heroku堆栈。当delayed_job队列> 0,并在delayed_job队列变为0时退出worker。
答案 2 :(得分:1)
事实证明我使用了错误的rake gem。
以下是在Heroku上导致rails 3出现问题:
gem 'rake', '0.9.2'
更新gem修复了问题,即使日志中没有错误:
gem "rake", "0.8.7"