【问题标题】:Keeping a rake job running保持 rake 作业运行
【发布时间】:2010-11-10 20:36:50
【问题描述】:

我正在使用 delayed_job 运行作业,每分钟都有一个 cronjob 添加新作业。

目前我有一个问题,即当前以“nohup rake jobs:work &”手动启动的 rake jobs:work 任务随机退出。

虽然上帝似乎是某些人的解决方案,但额外的内存开销相当烦人,我更喜欢可以通过部署脚本 (Capistrano) 重新启动的更简单的解决方案。

是否有一些 bash/Ruby 魔法来实现这一点,或者我注定要在我的服务器上运行一个监控服务并使用一些可怕的黑客攻击来允许该站点部署的非私有帐户能够重新启动它?

【问题讨论】:

    标签: ruby-on-rails ruby linux bash background


    【解决方案1】:

    对我来说,delayed_job 的守护进程 gem 是不可靠的。可能是一个写得不好的脚本(正在使用collectiveidea的delayed_job github page上的那个),而不是守护进程的错误,我不太确定。但无论出于何种原因,它都会在部署时不一致地重新启动。

    我在某处读到这是因为它没有等待进程实际退出,因此 pid 文件会被覆盖或其他原因。但我并没有真正费心去调查。我使用 these instructions 切换到 daemons-spawn gem,现在它似乎更可靠了。

    【讨论】:

      【解决方案2】:

      delayed_job 文档建议您使用监控服务来管理 rake worker 作业。我用的是 runit——效果很好。

      (可以在不替换init的模式下安装。)

      添加:

      Re:由 Capistrano 重新启动:是的,runit 启用了它。做一个

      sudo sv kill delay_job

      在你的 Capistrano 配方中杀死 delay_job 工人。 Runit 将使用您新部署的代码库重新启动它。

      【讨论】:

        【解决方案3】:

        我已经实现了一次又一次重新启动作业任务的小型 rake 任务:

        desc "Start a delayed_job worker in a endless loop to prevent exits."
        task :jobs => :environment do
          while true
            begin
              Delayed::Worker.new(:min_priority => ENV['MIN_PRIORITY'], 
                                  :max_priority => ENV['MAX_PRIORITY'], 
                                  :quiet => false).start
            rescue Exception => e
              puts "Exception occured (#{e})"
            end
            puts "Task jobs:work exited, clearing queue and restarting"
            sleep 1
            Delayed::Job.delete_all
          end
        end
        

        显然它不起作用。所以我以这个简单的解决方案结束:

        for (( ;; )); do rake jobs:work --trace; done
        

        【讨论】:

          【解决方案4】:

          摆脱延迟工作并使用wheneverresque

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-05-27
            • 2015-11-15
            • 2011-10-19
            • 2018-11-07
            • 1970-01-01
            • 2013-09-08
            相关资源
            最近更新 更多