重启Sidekiq

Und*_*ion 17 ruby restart sinatra sidekiq

重启sidekiq的正确方法是什么?它似乎在我启动它时缓存我的工作人员代码,因此每次我对我的工作人员进行更改时我都需要重新启动它.我正在使用Ctrl/C执行此操作,但此过程需要很长时间才能结束并将我返回到提示符.

有没有办法迫使重启立即生效?

我正在使用最新版本的Sinatra通过POW运行.

Hen*_*hiu 16

Sidekiq附带命令sidekiqctl,它可以停止与Sidekiq进程相关的PID.传入PID文件和秒数等待所有线程完成.

样品用法:

sidekiqctl stop #{rails_root}/tmp/pids/sidekiq_website_crawler.pid 60
Run Code Online (Sandbox Code Playgroud)

这里,60表示在所有Sidekiq线程完成处理之前等待的秒数.如果60秒过去,并且所有都没有完成,它们将自动被杀死.

我还建议使用God gem监视,停止,启动和重启Sidekiq.

一旦你这样做,你可以使用bundle exec god stop来停止所有sidekiq线程.

这是我的上帝文件,作为一个例子:

rails_env = ENV['RAILS_ENV'] || "development"
rails_root = ENV['RAILS_ROOT'] || "/home/hwc218/BuzzSumo"
 God.watch do |w|
     w.dir      = "#{rails_root}"
     w.name     = "website_crawler"
     w.interval = 30.seconds
     w.env      = {"RAILS_ENV" => rails_env}
     w.interval = 30.seconds
     w.start = "bundle exec sidekiq -C #{rails_root}/config/sidekiq_website_crawler.yml"
     w.stop = "sidekiqctl stop #{rails_root}/tmp/pids/sidekiq_website_crawler.pid 60"
     w.keepalive


    # determine the state on startup
     w.transition(:init, { true => :up, false => :start }) do |on|
    on.condition(:process_running) do |c|
      c.running = true
    end
    end

     # determine when process has finished starting
      w.transition([:start, :restart], :up) do |on|
      on.condition(:process_running) do |c|
      c.running = true
      c.interval = 5.seconds
    end

      # failsafe
       on.condition(:tries) do |c|
      c.times = 5
      c.transition = :start
      c.interval = 5.seconds
     end
    end

    # start if process is not running
     w.transition(:up, :start) do |on|
    on.condition(:process_running) do |c|
      c.running = false
    end
    end

    w.restart_if do |restart|
        restart.condition(:restart_file_touched) do |c|
          c.interval = 5.seconds
          c.restart_file = File.join(rails_root, 'tmp', 'restart.txt')
        end
    end
 end
Run Code Online (Sandbox Code Playgroud)

  • 它应该只包含Sidekiq进程ID的PID(编号).运行ps -ef | 得到它的grep"sidekiq". (2认同)