【问题标题】:Delay Job Worker keeps turning off?延迟作业工作者一直关闭?
【发布时间】:2012-10-18 00:58:30
【问题描述】:

Rails 新手和延迟作业的新手。

有一个应该在 5 分钟后触发。我终于让它工作了,所以如果我运行

rake jobs:work

在我的终端中,作业启动并正常工作。如果我在终端中按 CTRL-C 并退出该操作,则延迟的作业将停止正常工作。这是我的本地服务器上的一件事,而 Heroku 上的另一件事,我必须使用启动延迟的作业

heroku run rake jobs:work

我查看了新的 Heroku 工具带并下载了他们建议用于工人维护的 gem,工头,但是当我运行“工头启动”时,我收到了这个错误

ERROR: procfile does not exist

我不知道 procfile 是什么,我害怕在花了一天时间调试 delay_jobs 操作后会破坏东西,我想正确地做这件事以确保它正常工作,而不是想出一些 hacky 修复后来就崩溃了——所以我想我应该问这个问题,不管它可能是多么令人讨厌的模糊。

我应该为此使用工头吗?还是无业? (在另一个 SO 问题中看到了)。我的procfile在哪里?我应该对它做些什么吗?

谢谢,

萨沙

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 heroku delayed-job worker


    【解决方案1】:

    您应该使用procfile 来设置您的 Heroku 进程,这是 Heroku 用来定义和控制进程的标准方法。

    如果您到目前为止还没有使用procfile,那么一切可能仍然有效,因为 Heroku 在您推送 Rails 应用程序时添加了一些默认进程,包括webworker 进程。默认worker 进程设置为延迟作业。

    Foreman 的开发是为了设置您的本地计算机以使用相同的方法,但与 Heroku 服务不同,Foreman 实际上需要一个 procfile 来控制在 Foreman 启动时启动的服务,因为它没有知道如何设置默认值。

    我建议创建一个procfile,将其放置在项目的根目录中,以确保您的进程在本地计算机上的设置和运行方式与在 Heroku 上的方式相同。如果您想模仿 Heroku 自动设置的内容,请将以下内容添加到 procfile,具体取决于您是否使用 Thin Web 服务器(Heroku 推荐)。

    在你的 gemfile 中使用 Thin:

    web: bundle exec thin start -R config.ru -e $RACK_ENV -p $PORT
    worker: bundle exec rake jobs:work
    

    如果没有特殊的网络服务器(例如你使用 webrick,rails 默认):

    web: bundle exec rails server -p $PORT
    worker: bundle exec rake jobs:work
    

    一旦这个文件就位,你就可以在你的本地机器上运行 foreman,它会自动启动你的网络服务器和delayed_job worker。

    运行此过程只会影响在本地计算机上启动 delay_job。当您运行与您当前使用的完全相同的命令 bundle exec rake jobs:work 时,应该不会影响您在本地或 Heroku 上的 dj 操作。显然需要进行一些测试才能使事实如此。

    Workless 旨在扩展 Heroku 上的工作人员,这样您就不必在没有可用工作时为他们付费。它与procfile 或定义如何实际启动 dj 工作进程无关。

    【讨论】:

      【解决方案2】:

      据我所知,delayed_job 有 2 个版本:

      1. 原创(托比的)https://github.com/tobi/delayed_job
      2. collectiveidea 的叉子:https://github.com/collectiveidea/delayed_job

      在使用collectiveidea版本时,请按如下方式启动:

      # Runs two workers in separate processes.
      $ RAILS_ENV=production script/delayed_job -n 2 start
      

      我对 Heroku 上的延迟作业不熟悉,请按照它的说明进行操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-29
        • 2014-01-15
        • 1970-01-01
        • 2019-02-09
        • 1970-01-01
        • 1970-01-01
        • 2011-12-14
        • 2022-11-10
        相关资源
        最近更新 更多