在Rails中启动延迟作业的方法

4

我希望在启动Rails服务器时,可以启动生产环境下的脚本/延迟作业。有没有什么办法可以做到这一点?

编辑::

我已经在config/initializers/delayed_job.rb中添加了以下行。

Delayed::Worker.new.start 

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

你如何启动Rails服务器?更改该SW以同时启动DJ。 - Larry K
你找出问题所在了吗? - Alina
在启动时添加一个定时任务来运行你的工作程序。 - Ctpelnar1988
3个回答

0
我建议使用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时启动Delayed_Job。 - krunal shah

0

你可以设置一个init.d文件,但我建议使用monit或god。God是ruby编写的,所以它很熟悉,但这也意味着它会泄漏一些信息。如果你要运行God,我建议设置一个cron job来重启它。这是一篇非常好的文章,介绍了如何在服务器上配置monit。

我们选择了God,但如果我们再做一次选择,我们会选择monit。


-1

你可以做到

Delayed::Worker.new.start

在你的初始化器目录中(在那里创建一个新的“.rb”文件,它将与你的应用程序一起启动)


1
我已经在config/initializers下的delayed_job.rb文件中添加了这行代码,并使用ruby script/server -e production命令启动了生产环境的服务器。但是我的delayed_job服务器没有启动。 - krunal shah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接