【问题标题】:How do you always have delayed job running on heroku?你怎么总是延迟在heroku上运行的工作?
【发布时间】:2011-12-27 14:15:03
【问题描述】:

我有一个在 Heroku 上运行延迟作业的应用。但是目前我必须使用终端命令启动作业队列:

heroku rake jobs:work

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

有没有办法让 Heroku 在应用启动时始终在后台启动并运行延迟作业?无需每次都运行命令,也无需将其直接链接到我的终端 shell?

非常感谢。

编辑:

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

【问题讨论】:

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


    【解决方案1】:

    原来我使用了错误的 rake gem。

    以下导致 Heroku 上的 rails 3 出现问题:

    gem 'rake', '0.9.2'
    

    更新 gem 修复了问题,即使日志中没有错误:

    gem "rake", "0.8.7"
    

    【讨论】:

      【解决方案2】:

      我们将workless gem 与我们的heroku 堆栈一起使用。当delayed_job queue > 0时启动worker,当delayed_job queue变为0时退出worker。

      【讨论】:

        【解决方案3】:

        From the docs:

        在 Heroku 的 Aspen 或 Bamboo 堆栈上,使用 heroku workers 1

        在 Cedar 堆栈上,将此行放入 Procfile:

        worker: bundle exec rake jobs:work
        

        然后做heroku scale worker=1

        【讨论】:

        • 我有一个额外的工作人员一直在运行,但是如果不在终端上运行命令,这些工作似乎就不会开始。它在竹堆上。
        猜你喜欢
        • 2013-05-28
        • 2012-09-14
        • 2013-02-18
        • 2015-03-23
        • 2011-03-13
        • 2012-07-15
        • 2012-09-13
        • 2011-11-14
        • 1970-01-01
        相关资源
        最近更新 更多