你怎么总是在heroku上延迟工作?

时间:2011-11-12 11:14:49

标签: ruby-on-rails heroku terminal rake delayed-job

我有一个关于Heroku运行延迟工作的应用程序。但是,目前我必须使用terminal命令启动作业队列:

heroku rake jobs:work

...但这意味着当我关闭终端时,应用程序的延迟作业队列也会关闭。

有什么方法可以让Heroku在应用程序启动时始终在后台启动和运行延迟工作?无需每次都运行命令而没有直接链接到我的终端shell?

非常感谢。

编辑:

它在竹堆上。提升工作人员或运行佣金工作:工作,延迟的工作运行一段时间,但随后队列似乎停止处理。延迟作业队列中没有错误,工作人员只是停止处理作业。它必须每5或10分钟明确重启一次。

3 个答案:

答案 0 :(得分:4)

From the docs:

在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"