【问题标题】:Starting delayed_job at startup with rails在启动时使用 rails 启动 delay_job
【发布时间】:2011-03-06 12:13:15
【问题描述】:

当我将启动我的 Rails 服务器时,我想在我的生产中启动 script/delayed_job start。 反正我能做到吗?

编辑::

我已将此行添加到我的 config/initializers/delayed_job.rb 中。

Delayed::Worker.new.start 

但是当我运行我的 Rails 应用程序时,我的延迟作业服务器没有启动。 有没有其他解决办法??

【问题讨论】:

  • 如何启动 Rails 服务器?将 sw 更改为也启动 dj。
  • 您发现问题所在了吗?
  • 添加一个 cron 作业以在启动时运行您的工作人员。

标签: ruby-on-rails ruby delayed-job


【解决方案1】:

你可以的

Delayed::Worker.new.start

在您的初始化程序目录中(在其中创建一个新的“.rb”文件,它将从您的应用程序开始)

【讨论】:

  • 我在 config/initializers 中的delayed_job.rb 文件中添加了这一行。并使用 ruby​​ script/server -e production 启动服务器进行生产。但它没有启动我的延迟作业服务器。
【解决方案2】:

我建议使用 Capistrano 部署您的应用,并定义一个 after:deploy 挂钩以在每次部署时启动/重新启动 DJ。

我还建议使用 Resque 而不是 DelayedJob,因为后者往往会无缘无故地死掉,并且通常需要 Monit/God 监控并重新启动它。

namespace :delayed_job do
  desc "Start delayed_job process" 
  task :start, :roles => :app do
    run "cd #{current_path}; script/delayed_job start #{rails_env}" 
  end

  desc "Stop delayed_job process" 
  task :stop, :roles => :app do
    run "cd #{current_path}; script/delayed_job stop #{rails_env}" 
  end

  desc "Restart delayed_job process" 
  task :restart, :roles => :app do
    run "cd #{current_path}; script/delayed_job restart #{rails_env}" 
  end
end

after "deploy:start", "delayed_job:start" 
after "deploy:stop", "delayed_job:stop" 
after "deploy:restart", "delayed_job:restart"

【讨论】:

  • 我已经用 capistrano 设置了那个东西,但现在我想在启动我的 rails 应用程序服务器或 apache 时启动 delay_job。
【解决方案3】:

您可以设置一个 init.d 文件,但我建议使用 monit 或 god。上帝是红宝石,所以很熟悉,但这也意味着它有点泄漏。如果你要运行 God,我推荐一个 cron 作业来重新启动它。 This is a VERY good post 在您的服务器上配置监控。

我们走的是上帝的路线,但如果我们重来一遍 - 我们会做 monit。

【讨论】:

    猜你喜欢
    • 2012-11-09
    • 2012-11-08
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2016-04-28
    相关资源
    最近更新 更多